使用appdomain加载和卸载具有不同版本的相同dll

时间:2017-02-08 13:35:49

标签: c# appdomain windows-applications

我有一个Windows应用程序,我在运行时多次加载和卸载DLL,当我使用相同的版本DLL时它工作正常。当我尝试在运行时加载具有不同版本的相同dll时出现问题。例如:我加载了dll"版本1"并卸载它,然后我尝试加载相同的dll与不同的版本说"版本2",它不允许我加载。

请在下面找到加载/卸载的代码:

加载代码:

if (this.libraryDomain != null)
     {
        AppDomain.Unload(this.libraryDomain);
     }

     // Re-create the AppDomain and create an instance of the Preview Bridge Module
     this.libraryDomain = System.AppDomain.CreateDomain("PreviewLibraryDomain");
     PreviewLibraryLoader previewLibraryLoader = this._previewLibraryDomain.CreateInstanceAndUnwrap(
                                                    "Preview.Library.Interface", "Preview.Library.Interface.PreviewLibraryLoader") as PreviewLibLoader;

     this._bridgeModule = previewLibraryLoader.LoadPreviewLibrary(assemblyPath);

卸载代码:

if (this.libraryDomain != null)
        {

           AppDomain.Unload(this.libraryDomain);
           this.libraryDomain = null;
        }

1 个答案:

答案 0 :(得分:0)

您必须阅读此问题

Hot Unload/Reload of a DLL used by an Application

将程序集加载到AppDomain后,无法卸载它。 您可以测试它尝试删除version1.dll。 dll与应用程序链接,但是它已被卸载。