C#Assembly加载错误的程序集

时间:2018-02-04 06:23:04

标签: c# .net .net-assembly appdomain assembly-loading

  

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

基本上,我想做三件事:

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异常。我也使用Process Explorer验证了这一点:它还显示了正在加载的启动路径中的程序集

也没有卸载组件。

我做错了什么???

0 个答案:

没有答案