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


Answers

基本的に、これは、参照しているアセンブリに "ローカルコピー"が "True"に設定されている場合に発生します。つまり、DLLのコピーがEXEと共にbinフォルダに置かれます。

Visual Studioは、参照されているアセンブリのすべての依存関係もコピーするので、参照されている同じアセンブリの2つの異なるビルドで終わる可能性があります。 これは、プロジェクトが別々のソリューションにある場合に発生する可能性が高く、個別にコンパイルすることができます。

私が取り組んだのは、アセンブリプロジェクトでの参照のためにローカルコピーをFalseに設定することです。 完成した製品を実行するアセンブリが必要な実行可能ファイル/ Webアプリケーションでのみ実行します。

希望は意味をなさない!

Question

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

問題は、私が外部コンポーネントを組み込むと、私は常に以下の警告を得ることです:

"Found conflicts between different versions of the same dependent assembly".

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




これは実際に外部コンポーネントによって異なります。 .NETアプリケーションで外部コンポーネントを参照すると、そのコンポーネントを識別するためのGUIDが生成されます。 このエラーは、プロジェクトのいずれかで参照されている外部コンポーネントの名前が同じで、別のアセンブリの別のコンポーネントとバージョンが異なる場合に発生します。

これは、「参照」を使用して参照を検索し、誤ったバージョンのアセンブリを追加するか、ローカルマシンにインストールしたコンポーネントとは異なるコードバージョンのコンポーネントをコードリポジトリに追加すると発生することがあります。

これらの競合が発生しているプロジェクトを見つけて、参照リストからコンポーネントを削除してから再度追加して、同じファイルを指していることを確認してください。




私は私のプロジェクトで同じ問題を抱えていましたが、上記のどれもが警告を解決するのには役に立たなかった。 詳細なビルドログファイルを確認し、AsmSpyを使用して影響を受けるソリューションの各プロジェクトに正しいバージョンを使用していることを確認し、各プロジェクトファイルの実際のエントリをダブルチェックしました。

結局のところ、問題は1つのプロジェクトで参照していたいずれかのネストされた依存関係であることが判明しました。 このリファレンス(A)には、(B)の別のバージョンが必要でしたが、これは私のソリューション内の他のすべてのプロジェクトから直接参照されていました。 参照されたプロジェクトの参照を更新すると、それが解決されました。

Solution A
+--Project A
   +--Reference A (version 1.1.0.0)
   +--Reference B
+--Project B
   +--Reference A (version 1.1.0.0)
   +--Reference B
   +--Reference C
+--Project C
   +--Reference X (this indirectly references Reference A, but with e.g. version 1.1.1.0)

Solution B
+--Project A
   +--Reference A (version 1.1.1.0)

私は上記のことが私の言うことを示すことを願って、調べるために私の数時間を要したので、他の誰かが同様に恩恵を受けることを願っています。




=>アプリケーションの一部のインスタンスが部分的にインストールされていることを確認します。

=>まずアンインストールアプリケーションからそのインスタンスをアンインストールします。

=>次に、クリーンアップ、再構築、デプロイを試してください。

これは私の問題を解決しました。それはあなたにも役立ちます。 宜しくお願いします。




これも私に起こった。 1つのdllは2回参照されました。ひとつは直接参照(参照)と間接(別の参照プロジェクト参照)です。 私は直接参照を削除し、きれいに&再構築されたソリューション。 問題は修正されました。




Visual Studioの場合、 ソリューションを右クリックし、 Manage nuget packagesは、すべてのパッケージを同じバージョンに設定する「Consolidate」タブを表示します。




考慮すべきもう1つのことは、binフォルダーを使用しているサービスを実行していないことを確認することです。 彼らがサービスを停止し、ソリューションを再構築する場合