最近在写一个解析分析程序,需要动态加载卸载程序集(其实就是一个简单的插件框架),我的 思路是在主程序的目录下,创建一个assemblis目录,用来存放插件目录,如果加载插件时将其复制到 此目录,然后主程序从此目录中加载程序集。其实还有一个更简单的方法,也是在网上找到的。代码如下:
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = functionDirectory;
setup.PrivateBinPath = AppDomain.CurrentDomain.BaseDirectory;
setup.ApplicationName = "Graph";
appDomain = AppDomain.CreateDomain("Functions", null, setup);
remoteLoader = (RemoteLoader) appDomain.CreateInstanceFromAndUnwrap("SuperGraph.exe", "SuperGraphInterface.RemoteLoader");
其实就是applicationbase与prvatebinpath分别设置成插件目录与主程序目录 。