依存関係リーダーを使用する
dep.exeを使用すると、フォルダー全体のネストされたすべての依存関係を一覧表示できます。grep や awk などの UNIX ツールと組み合わせると、問題の解決に役立ちます。
複数のバージョンで参照されているアセンブリを見つける
$ dep | awk '{ print $1 " " $2; print $4 " " $5 }' | awk '{ if (length(versions[$1]) == 0) versions[$1] = $2; if (versions[$1] != $2) errors[$1] = $1; } END{ for(e in errors) print e } '
System.Web.Http
このあいまいなコマンド ラインは、dep.exe を実行し、出力を 2 回パイプして awk に渡します。
- 親と子を 1 つの列に配置します (デフォルトでは、各行には 1 つの親と子が含まれ、この親がその子に依存しているという事実を表します)
- 次に、連想配列を使用して一種の「グループ化」を行います
このアセンブリがビンに取り込まれた方法を理解する
$ dep myproject/bin | grep -i System\.Web\.Http
MyProject-1.0.0.0 >> System.Web.Http.Web-5.2.3.0 2 ( FooLib-1.0.0.0 )
MyProject-1.0.0.0 >> System.Web.Http.Web-4.0.0.0 2 ( BarLib-1.0.0.0 )
FooLib-1.0.0.0 > System.Web.Http.Web-5.2.3.0 1
BarLib-1.0.0.0 > System.Web.Http.Web-4.0.0.0 1
この例では、ツールは System.Web.Http 5.2.3 が FooLib への依存関係から来ているのに対し、バージョン 4.0.0 は BarLib から来ていることを示します。
次に、次のいずれかを選択します
- ライブラリの所有者に同じバージョンを使用するよう説得する
- それらの使用をやめる
- 構成ファイルにバインディング リダイレクトを追加して、最新バージョンを使用する
Windowsでこれらを実行する方法
Unix タイプのシェルを持っていない場合は、実行する前にダウンロードする必要がありawk
ますgrep
。次のいずれかを試してください