19

C#アプリケーションのビルドバージョンを取得し、参照dllの1つを変更する必要があります。これを行うための最良の方法は、参照dllで特定のバージョンをオフにしているのですが、dllを新しいバージョンに置き換えてテストするとすぐに、「ファイルまたはアセンブリXXXXX、バージョン=XXXXXを読み込めませんでした。」が表示されます。ローダーがdllのバージョンを気にしないようにして、dllがロードを試みるようにする方法はありますか?

4

1 に答える 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 に答える