2010-11-24 18 views
7

私のプロジェクト参照Library1.dllおよびLibrary2.dllLibrary2.dllLibrary1.dllに依存しますが、別の名前で参照するようにコンパイルされました。Library1.Net40.dll.NETアセンブリの参照を別の名前に解決しますか?

Library1.dllに解決するためにLibrary1.Net40.dllのためのすべての参照をリダイレクトするために自分のアプリケーションを伝える良い方法はありますか?おそらく、あなたが<bindingRedirect>を使ってバージョンをリダイレクトする方法に似た何か?

私はAppDomain.AssemblyResolveイベントを処理するソリューションを持っていますが、これはやりやすいことですが、これを行うにはより良い方法が必要です。

編集: 誰の参考のためには、ここで私は別のアセンブリにリダイレクトするようにAppDomain.AssemblyResolve eventを使用してそれを解決することになった方法です。

答えて

4

<codeBase> elementで試したことはありますか?

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="Library1.Net40" 
           publicKeyToken="..." 
           culture="neutral" /> 
      <codeBase version="2.0.0.0" 
         href="Library1.dll"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

(未テスト、それが動作するかどうか全く分からない。)

CF:それはコメント:)

良いアイデア、感謝のために少し長いですので、ここではこの更新プログラムを入れています。リダイレクトは機能していますが、名前が異なるので不平を言います。ログは次のとおりです。

LOG: Attempting download of new URL file:///C:/Project/bin/Library1.dll. 
LOG: Assembly download was successful. Attempting setup of file: C:\Project\bin\Library1.dll 
LOG: Entering download cache setup phase. 
LOG: Assembly Name is: Library1, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed 
WRN: Comparing the assembly name resulted in the mismatch: NAME 
ERR: The assembly reference did not match the assembly definition found. 
ERR: Setup failed with hr = 0x80131040. 
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
+0

更新が追加されました –

関連する問題