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

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

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

問題は、外部コンポーネントを含めると常に次の警告が表示されることです。

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

この警告は正確には何を意味し、この警告を除外する可能性はありますか (ソース コード ファイルで #pragma enable を使用するなど)?

ベストアンサー1

この警告は、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 バージョンが使用されることを意味します。

問題のある参照を特定するには、次の方法があります。

  • 以下のユーティリティを使用することができます。出典: github.com
  • もう 1 つの簡単な方法は、ビルド出力の詳細度 (ツール、オプション、プロジェクトとソリューション、ビルドと実行、MSBuild プロジェクト ビルド出力の詳細度、詳細) を設定し、ビルド後に出力ウィンドウで警告を検索し、そのすぐ上のテキストを確認することです。(パウロヤこの回答のコメントでこれを提案した人

おすすめ記事