1

新しい TeamCity エージェントをセットアップしようとしています。

新しいエージェントが呼び出しています: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\CL.exe

既存のエージェントが呼び出している間: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64\CL.exe

どちらも 64 ビット ホストであり、64 ビット バイナリを構築しているため、既存のエージェントは、私が知る限り正しいことを行っています。両方とも同じ引数で msbuild を呼び出しています (詳細は無実を保護するために削除されています): C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe (xxxx.sln /clp:PerformanceSummary /p:Configuration=Release / p:プラットフォーム=x64)

このブログを見つけました: http://blogs.msdn.com/b/aaronhallberg/archive/2007/07/16/msbuild-property-evaluation.aspx、msbuild がプロパティを評価する方法を説明しています。しかし、ツールを決定するためにどのプロパティが使用されているかはわかりません。

なぜ私がツールの選択にこだわるのか不思議に思うかもしれません。CL 呼び出しはどちらの場合でも成功します (64 ビット ウィンドウで 32 ビット コンパイルを実行できます)。しかし、新しいエージェントでは、プリコンパイル済みヘッダーでエラーが発生します。 - プリコンパイル済みヘッダーは、同じ AMD64\CL.exe によって消費されています。

したがって、msbuild が実際に使用する小道具を誰かが知っていれば、これを理解するのに役立ちます。

補足として、ワークステーションの VC++ ディレクトリ、実行可能ディレクトリの下の Visual Studio プロジェクト プロパティ ページにクロス コンパイラ (x86_amd64\CL.exe) が表示されます。どちらがWin 7、64ビットです。継承されていると書かれており、msbuild props (C:\Users\bdelavega\AppData\Local\Microsoft\MSBuild\v4.0) をカスタマイズしていません。なぜそれがデフォルトになるのですか?

4

1 に答える 1

0

この投稿では、msbuild が VS 2010 から呼び出されたときにデフォルトでクロス コンパイラを使用すること、およびそれをオーバーライドするコマンド ライン スイッチがあることを説明しています。

http://social.msdn.microsoft.com/Forums/en-US/vcprerelease/thread/d6b352ea-12b6-4867-b86d-a052fbab1da4

それは完全な答えではありませんが、私の問題を克服するのに十分です.

于 2012-08-29T15:28:13.043 に答える