使用Assembly.LoadFrom方法将2个程序集作为相同的路径。为什么?

时间:2018-05-21 10:40:27

标签: c#-4.0

 string Version1_dll = System.Configuration.ConfigurationManager.AppSettings["Version1_dll"];//New_Dll

 string Version2_dll = System.Configuration.ConfigurationManager.AppSettings["Version2_dll"];//Old Dll

 Assembly assembly1 = Assembly.LoadFrom(Version1_dll);
 Assembly assembly2 = Assembly.LoadFrom(Version2_dll);

在上面的代码中,读取2 dll文件并获取控制器,方法及其参数等数据。

但是,问题是Assembly.LoadFrom(Version2_dll)覆盖并在2个对象中显示相同的(Version1_dll)dll路径。

1 个答案:

答案 0 :(得分:0)

  • 对于此特定问题,Application Domain中只有DLL的副本。

  • 这就是为什么当您加载较新版本时它将不会加载已存在于应用程序域中。

  • 这里就像当你添加这样的程序集(两者都相同)时,它们可能都具有相同的命名空间,因此它会混淆,因此它不允许加载。

注意:有关详细信息,您必须了解装配负载的工作原理。

解决方案1:

要解决此问题,您必须在AssemblyInfo.cs中提供DLL版本号。如果指定不同的版本,则允许加载两者。 (另外不要忘记在项目的签名部分提供强名称。)。