2017-02-08 18 views
0

実行時にdllを複数回ロードしてアンロードするWindowsアプリケーションがあります。同じバージョンのDLLを使用しているときにうまく動作します。実行時に同じバージョンの異なるdllをロードしようとすると問題が発生します。例えば、私はdll "version1"をロードしてアンロードしてから、別のバージョンの "version2"と同じdllをロードしようとしましたが、ロードできないようにしました。appdomainを使用して同じバージョンの同じdllをロード/アンロードする

ロード/アンロードのためのコードの下に見つけてください:

ロードコード:

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

あなたは

Hot Unload/Reload of a DLL used by an Application

この質問を読まなければなりません

アセンブリがAppDomainに読み込まれると、アセンブリをアンロードできません。 version1.dllを削除しようとするとテストできます。 DLLはアプリケーションとリンクされていますが、アンロードされています。

関連する問題