複数のプロジェクトを含むソリューションをクリーンアップしてビルドすると、出力ウィンドウにビルドが成功したことが報告されます。ただし、エラー一覧ウィンドウを表示すると、次の警告が表示されます。
同じ依存アセンブリの異なるバージョン間で解決できない競合が見つかりました。ログの詳細度が詳細に設定されている場合は、これらの参照競合がビルド ログに一覧表示されます。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メジャーコンポーネントのみがアセンブリバージョンに入ります。:)