1 つの小さな変更が原因で、Visual Studio が巨大なプロジェクト全体を再構築することを決定することがあります。何が問題なのかを確認するために、ビルド ログを Diagnostic に切り替えました。
< Bunch of spam >
Outputs for C:\<snip>\PRECOMPILEDHEADERS.CPP:
C:\<snip>\PRECOMPILEDHEADERS.OBJ
All outputs are up-to-date.
Forcing rebuild of all source files due to a change in the command line
...そして、プリコンパイル済みヘッダーを再構築し、次に他のすべてを再構築します。
これは、プロジェクト内の単一の .cpp または .h ファイルを変更したときに発生します。プロジェクト設定で何も変更していません。また、同じ変更が常に発生するわけではありません。それはランダムです。
ここで何が起こっているかについてのアイデアはありますか?詳細情報はどこで入手できますか? http://blogs.msdn.com/b/vsproject/archive/2009/07/21/enable-c-project-system-logging.aspxの説明を使用してデバッグを有効にしようとしましたが、それ以上の情報は得られませんでした. この「コマンドラインの変更により、すべてのソースファイルの再構築を強制する」がどこから来ているのかわかりません。工場出荷時の MSBuild ファイルには含まれていません。
その他の情報: これは、C#、ネイティブ C++、およびその他の C++/CLI dll を含む、他の多くのプロジェクトをリンクする C++/CLI dll プロジェクトです。問題を引き起こす傾向があるため、依存関係からすべての C# プロジェクトを削除しようとしましたが、それは変わりませんでした。その特定の文字列をグーグル検索しましたが、私の状況は、それを報告している他の人の状況と一致しません. (1 つは Intel C++ を使用しており、もう 1 つはコマンド ラインから MSBuild を使用して大文字と小文字を変更していました。Visual Studio 自体からビルド ソリューションを使用しています)。
私が試した一般的な修正を説明するために編集します。
プロジェクトのみをビルドしてみました。同じことをします。
存在しない .h ファイルは含めません。
bin/object フォルダーを削除し、最初から再構築しました。これにより、通常、いくつかのビルドで問題が解消されますが、その後すぐに戻ってきます。
編集#2:
ログの前半で疑わしいものが見つかりました:
3>Using "ResolveNonMSBuildProjectOutput" task from assembly "Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
3>Task "ResolveNonMSBuildProjectOutput"
3> Resolving project reference "..\..\..\..\CommonCore\VS2010\Project1\Project1.vcxproj".
3> Project reference "..\..\..\..\CommonCore\VS2010\Project1\Project1.vcxproj" has not been resolved.
これは私のプロジェクトのいくつかで繰り返されます...私はそれを追跡し、プロジェクト参照のヒントパスに問題があるかどうかを確認します.