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

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

複数のプロジェクトを含むソリューションをクリーンアップしてビルドすると、出力ウィンドウにビルドが成功したことが報告されます。ただし、エラー一覧ウィンドウを表示すると、次の警告が表示されます。

同じ依存アセンブリの異なるバージョン間で解決できない競合が見つかりました。ログの詳細度が詳細に設定されている場合は、これらの参照競合がビルド ログに一覧表示されます。C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets

このメッセージをダブルクリックすると、C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targetsファイルが開きますが、その中身は何もわかりません。

私は Web 用に Visual Studio Express 2013 を使用しています。

何が問題で、どの DLL に問題があるのか​​を調べ、警告を消すにはどうすればよいですか?

ベストアンサー1

追記:SO の @Nick Craver によるこの件に関する素晴らしい記事あなたが読むべきもの


他の回答ではそう言っていますが、明確に述べられていないので、私はこうします...。

VS2013.2 では、引用された情報の発行を実際にトリガーするには、次のようなメッセージを読み取らない必要があります。

C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): 警告 MSB3277: 同じ依存アセンブリの異なるバージョン間で解決できない競合が見つかりました。これらの参照の競合は、ログの詳細度が詳細に設定されている場合にビルド ログにリストされます。

これは正しくありません (少なくとも一部のバージョンの Visual Studio ではそうでした。最新の VS2015 Update 3 以降では問題ないようです)。代わりに、これを診断に変更してください ( [ツール] -> [オプション] -> [プロジェクトとソリューション] -> [ビルドと実行]で、MSBuild プロジェクト ビルド出力の詳細度を設定してください)。すると、次のようなメッセージが表示されます。

「Newtonsoft.Json、バージョン=6.0.0.0、カルチャー=中立、PublicKeyToken=30ad4fe6b2a6aeed」と「Newtonsoft.Json、バージョン=6.0.5.17707、カルチャー=中立、PublicKeyToken=30ad4fe6b2a6aeed」の間に競合がありました。

  • 「Newtonsoft.Json、Version=6.0.0.0、Culture=neutral、PublicKeyToken=30ad4fe6b2a6aeed」はプライマリであったため選択されましたが、「Newtonsoft.Json、Version=6.0.5.17707、Culture=neutral、PublicKeyToken=30ad4fe6b2a6aeed」はプライマリではありませんでした。

それから

  • Ctrl-Alt-Oビルド出力ウィンドウに移動
  • ドリルダウンを見つけるには、「was selected 」を検索します。

...そして、診断メッセージの詳細を見ている人にとっては、この無知な人間にとってはニュースだった。6.x町では、すべてのバージョンは内部的にはアセンブリバージョンであるという慣例があります6.0.0.0。つまり、SemVerメジャーコンポーネントのみがアセンブリバージョンに入ります。:)

おすすめ記事