2017-03-09 5 views
0
X <= nuget package A <= DLL version 1 
X <= nuget package B <= DLL version 2 

私のプロジェクトXは2つのサードパーティーのナゲットパッケージAとBを参照しています。どちらのパッケージも同じDLLを参照していますが、異なるバージョンです。今はビルド時に、DLLv1がbinフォルダのDLLv2によってオーバーライドされているようです。また、実行時に、AのコードがDLLv1が見つからないと訴えています。ファイルまたはアセンブリまたはそのいずれかの依存関係を読み込めません。システムが指定されたファイルを見つけることができません

DLLv2にバインドするためにbinフォルダにアセンブリバインド設定ファイルを既に追加しました。しかし、それは何も変わらないようです。

これはmsbuildを使用して構築されたCSharpプロジェクトです。

質問:

  1. は、この問題を解決するための適切なツールをAssemblyBindingていますか?
  2. これを解決する適切な方法は何ですか?
+0

シンプルな...これをしないでください。ソリューションのすべてのプロジェクトに同じバージョンのパッケージを参照させる必要があります。 –

+0

ナゲットパッケージはサードパーティ製であり、どのDLLバージョンを使用するかについては何も制御できません。 – Lee

+0

サードパーティのライブラリに特定のバージョンが固定されていない限り、消費するプロジェクト全体で共有依存関係を管理してインストールすることができます。ビンにはファイル名のインスタンスを1つしか持てません。これでうまくいかない場合は、プロジェクトを複数の入り口に分けて、それぞれに特定のバージョンの共通ライブラリ –

答えて

0

私の疑問に根本的な原因が見つかりました。私のプログラムはPowerShellで動作しており、PowerShellは私のアプリケーションの設定をロードしません。私は自分のバインディングを持つためにPowerShellの設定をする必要があります。

関連する問題

 関連する問題