我有一个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;
}
答案 0 :(得分:0)
您必须阅读此问题
Hot Unload/Reload of a DLL used by an Application
将程序集加载到AppDomain后,无法卸载它。 您可以测试它尝试删除version1.dll。 dll与应用程序链接,但是它已被卸载。