C#アプリケーションのビルドバージョンを取得し、参照dllの1つを変更する必要があります。これを行うための最良の方法は、参照dllで特定のバージョンをオフにしているのですが、dllを新しいバージョンに置き換えてテストするとすぐに、「ファイルまたはアセンブリXXXXX、バージョン=XXXXXを読み込めませんでした。」が表示されます。ローダーがdllのバージョンを気にしないようにして、dllがロードを試みるようにする方法はありますか?
9404 次
1 に答える
20
はい、これを行うことができます-MSDNの記事「アセンブリバージョンのリダイレクト」を参照してください。
ドキュメント全体を読む必要がありますが、基本的には、アセンブリのパブリッシャーが「パブリッシャーポリシーファイル」を作成するか、コンシューマーが次のようにファイルにを追加するbindingRedirect
必要がありapp.config
ます(記事から直接コピー)。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
いくつかの注意:
文化を明示的に指定していない場合(多くの場合は指定していません)、「en-us」ではなく「neutral」になります。
まだ知らない場合は、次のような厳密な名前のユーティリティを使用して、アセンブリの公開鍵トークンを取得できます。
sn -t [AssemblyPath]
于 2009-09-22T17:55:06.203 に答える