1. ホーム
  2. .net

[解決済み】警告。同じ依存アセンブリの異なるバージョン間で競合が見つかりました。

2022-01-26 03:27:19

質問

現在、20のプロジェクトで構成される.NETアプリケーションを開発中です。これらのプロジェクトの中には、.NET 3.5を使ってコンパイルされているものもあれば、まだ.NET 2.0のプロジェクトもあります(今のところ問題なし)。

問題は、外部コンポーネントをインクルードすると、常に次のような警告が表示されることです。

同じ依存アセンブリの異なるバージョン間で競合が見つかりました。

また、この警告を除外することは可能でしょうか?

解決方法は?

この警告は、2つのプロジェクトが同じアセンブリを参照していることを意味します(例. System.Windows.Forms が、2つのプロジェクトは異なるバージョンを必要とします。いくつかのオプションがあります。

  1. すべてのプロジェクトを再コンパイルして同じバージョンを使用する(たとえば、すべてを.Net 3.5に移行する)。これは、すべてのコードが、コンパイルされた依存関係のバージョンで実行されるため、好ましいオプションです。

  2. を追加します。 バインディングリダイレクト . これにより、警告は抑制されます。しかし、.Net 2.0 プロジェクトは (実行時に) .Net 3.5 バージョンの依存アセンブリにバインドされます。 System.Windows.Forms . Visual Studioでエラーをダブルクリックすると、すぐにバインディングリダイレクトを追加することができます。

  3. 使用方法 CopyLocal=true . これで警告が抑えられるかどうかはわかりません。上記のオプション 2 と同様に、すべてのプロジェクトで System.Windows.Forms の .Net 3.5 バージョンが使用されることになります。

ここで、問題のある参照を特定する方法をいくつか紹介します。

  • にあるようなユーティリティを使用することができます。 https://gist.github.com/1553265
  • もう一つの簡単な方法は、Build 出力冗長性(ツール、オプション、プロジェクトとソリューション、ビルドと MSBuildプロジェクトのビルド出力の冗長性、詳細)。 ビルドし、出力ウィンドウで警告を検索し、その警告が表示されているところを見ます。 のすぐ上のテキストをご覧ください。 (ハットヒント パウロ屋 で提案してくれた。 のコメント) .