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


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);

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

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

  • 对于此特定问题,应用程序域中只能复制 DLL。

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

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

注意:有关更多详细信息,您必须挖掘程序集加载的工作原理。

解决方案 1:

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

最新更新