2009-09-22 7 views
17

C#アプリケーションのビルド版を用意し、参照DLLの1つを変更する必要があります。これを行う最善の方法は何ですか、私は特定のバージョンを参照dllで無効にしていますが、新しいバージョンでdllを置き換えるとすぐに "ファイルまたはアセンブリXXXXX、バージョン= XXXXXを読み込めませんでした。そこのdllだけでロードしようとしますので、DLLのバージョンを気からローダーを停止する方法プロジェクトを再コンパイルせずにC#プロジェクトの参照DLLをアップグレードします

答えて

18

はい、あなたがこれを行うことができます - ?MSDNの記事Redirecting Assembly Versionsを参照してください

あなたが全体をお読みください。これは本質的には、アセンブリのパブリッシャーが「パブリッシャーポリシーファイル」を作成するか、bindingRedirectapp.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" "中立" ではなくなります。

  • あなたはすでにそれを知っていない場合は、 このように、厳密な名前のユーティリティを使用して アセンブリの公開キートークンを取得することができます、再コンパイルが必要になることsn -t [AssemblyPath]

+0

ないだろうそれ? –

+0

または、構成ファイルは実行時にのみチェックされますか? –

+2

これらのxmlファイルは実行時にチェックされます。 @Michael - 確かに、Brianが言ったことは、http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx – Brian

関連する問題