チームビルドシステム(TFS 2013)を使用してメインプロジェクトビルド(C++)を自動化しようとしています。 しかし、コード変更が発生していなくても、私の開発マシン上でVS2013を使用するのではなく、2つのプロジェクトが常に構築されていることがわかります。実際に修正されていなくても、バイナリは常に生成されてテストチームに送信されるため、頭痛が発生します。TFSビルド:変更されていなくてもプロジェクトを再構築
ビルド出力で "診断"の冗長性を有効にすると、2つのプロジェクトが異なる動作をすることがわかります。
最初のプロジェクトでは、.PCHファイルが変更されているため(変更は発生していませんが)、すべての.cppファイルが再構築されます。私はPCHを無効にしようとする可能性がありますが、本当にそれを避けることができます。さらに、エラーの根本的な原因に行かないと、何度も何度もエラーが表示されます。
2番目のプロジェクトでは、.hファイルを生成する事前ビルドステップがあります。ただし、コードの変更が検出されない場合(https://msdn.microsoft.com/en-us/library/42x5kfw4.aspx)、開発マシンで実際に発生する前準備ステップは実行しないでください。ビルドマシンでは、代わりに、prebuildステップが実行され、.hが生成され、強制的に完全な再構築が行われます。
チームビルドの設定では、「クリーンワークスペース= false」、「クリーンビルド= false」があります。私もMSBuild設定で "/ p:IncrementalBuild = True"を試みましたが、これで問題は解決されませんでした。
注 - 投稿前にすでにVisual Studio Rebuilds unmodified projectsとVS2010 always rebuilds solution?を見ました。
明らかにビルド環境は同じでなければなりません。テストエージェントはこのビルド自動化タスクのために作成されていますので、古い/壊れたものは存在しないはずです。両方を削除してみました/両方の環境で最新/クリーンビルドを取得しても同じ結果が得られました。 TFSビルドは、これらの2つのプロジェクトをダースから再コンパイルします。 –