2

我已经看到有关动态加载程序集的问题

基本上,我想做三件事:

1)动态加载用户选择(托管)的程序集

2)修改程序集(在程序本身中)

3)用新的替换加载的程序集

下面的代码加载正确的程序集:

System.Reflection.Assembly myDllAssembly = System.Reflection.Assembly.LoadFile(assemblyPath);

但是,据我所知,要替换文件,我首先需要卸载它以删除文件句柄。所以我尝试AppDomain使用下面的代码加载文件:

AppDomain dom = AppDomain.CreateDomain("assemblyLoadDomain");
AssemblyName assemblyName = new AssemblyName();
assemblyName.CodeBase = assemblyPath;
Assembly assembly = dom.Load(assemblyName);

// do operation here

AppDomain.Unload(dom);

这将开始在应用程序启动路径中搜索程序集,而不是在assemblyPath. 如果未找到,则给出 FileNotFound Exception。我也使用 Process Explorer 验证了这一点:它还显示了正在加载的启动路径中的程序集

也没有卸载程序集。

我究竟做错了什么 ???

4

0 回答 0