GAC にあるアセンブリのローカルコピーを .NET で強制的に使用するにはどうすればよいですか? 質問する

GAC にあるアセンブリのローカルコピーを .NET で強制的に使用するにはどうすればよいですか? 質問する

私には(私の制御外の理由で).NETアセンブリがあります。しなければならないGAC に含まれていなければなりません。しかし、同じアセンブリが別のプログラムによって使用され、そのプログラムには同じアセンブリの古いバージョンの独自のコピーがあります。GAC にあるものではなく、独自のコピーを使用する必要があります。この場合、適切なバージョン管理はおそらく手間がかかるでしょう。理由はここでは説明しません。私の質問は次のとおりです。.NET に次のように指示する方法はありますか: このディレクトリにあるこの DLL だけを使用してください - GAC または他の場所で見つかったものはすべて無視してください

ベストアンサー1

GAC アセンブリとローカル アセンブリのバージョン番号が異なることを確認します (AssemblyInfo: [assembly: AssemblyVersion("1.0.0.*")] で AssemblyVersion にワイルドカードを使用して、少なくともビルド番号が自動的に増加するようにしておくのは良い考えです)。次に、アプリの構成を使用してアセンブリ バインディングをリダイレクトします。

あなたの場合、assemblyBinding 構成の "appliesTo" 属性は必要ありません。必要なのは次のようなものだけです:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="YourAssembly" publicKeyToken="AAAAAAAAAAAA" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-5.2.1.0" newVersion="5.0.8.1"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

おすすめ記事