要件:プロジェクトは多くのサードパーティSDKを参照する必要があり、その中にはよく使われるDLL(:Newtonsoft.Json.dllなど)を参照するものもあり、これによりプロジェクト全体が同じDLLの異なるバージョンを参照し、同じDLLコンパイル結果のファイルは1つだけ出力されます。
単純なDLLバージョン依存性の問題は以下に挙げられます:
参考:ハイパーリンクのログインが見えます。
参照されているDLLが異なるバージョンであるだけでなく、publicKeyTokenのバージョンでもある場合、どのように解決すべきでしょうか? Newtonsoft.Json.dllの場合、プロジェクトは異なるバージョンとpublicKeyTokenを持つファイルを参照します。
- Newtonsoft.Json.dll,version:12.0.0.0,publicKeyToken:30ad4fe6b2aaaeed - Newtonsoft.Json.dll,version:4.0.0.0,publicKeyToken:null
単純なリファレンスリダイレクト設定では問題は解決しません。構成は以下の通りです:
Newtonsoft.Jsonバージョン4.0.0.0に依存したサードパーティSDKメソッドを呼び出すと、以下のエラーが出ます:
ファイルまたはアセンブリ「Newtonsoft.Json, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null」またはその依存関係のいずれかを読み込みに失敗しました。 見つかったアセンブリマニフェストの定義はアセンブリ参照と一致しません。 (HRESULTの例外:0x80131040) 解決策:binディレクトリの下に新しいJSON4フォルダを作成し、Newtonsoft.Json.dll 4.0.0.0のバージョンをこのフォルダの下に配置し、以下のように設定を変更します:
(終わり)
|