2013-07-24 3 views
5

ここに私のバットファイルがあります。なぜMSBuildによるコンパイルにIDEよりも時間がかかりますか?

call "C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\bin\rsvars.bat" 
msbuild.exe C:\Work\Project1.dproj /t:Rebuild /p:Config=Debug;Platform=Win32 

これはうまくいくようです。しかし、ビルドには12分かかります。同じ構成/プラットフォームの組み合わせでは、IDEで完全なビルドを実行すると2分30秒かかります。私は減速の原因を突き止めた。私が見なければならないアイデアや設定はありますか?

EDIT:私はIDEFixPack 5.3を使用し、ビルド時間は約2.5分です。 IDEFixPackを削除すると、IDEで12分のビルドが行われます。

+0

これをどのように再現できますか? –

+1

残念ながら私は知らない。今日は初めてのmsbuildで遊んでいるので、再現可能なシナリオを提供するためにこれについて十分に知りません。私はサンプルアプリケーションで試すことができますが、条件は3,560,000 +ラインを持つ私の商用アプリケーションとは大きく異なることになります。 msbuildに既知のコンパイラスイッチがあるかどうかわかりませんでした。 –

+0

IDEに関する詳細を忘れました。私はIDEフィックスパックを使用していますが、有効にしている場合と無効にしている場合のどちらの場所でもパフォーマンスの差は見られませんでしたが、その差はごくわずかです。 –

答えて

2

私はIDEFixPackを削除しました。私はmsbuildと同じ12分のビルドタイムを見ます。

+1

+1その場合、アンディのfastdccを使用してコマンドラインビルドを高速化することができるはずです –

+0

素晴らしい。私はその微妙な変化を認識していませんでした。私は必ず調査します。私たちのビルドプロセスはやや複雑になってきました。私たちはFinalBuilderをうまく使っていますが、Delphiのビルドアクションは自動インクリメントのバージョン番号設定を失い、バージョン番号が壊れてしまいます。 msbuildを呼び出す前に、dprojのバージョン設定を更新するユーティリティがあります。 StackOverflowであなたの投稿がスイッチを作るのに最も便利だと分かっています。ありがとう! –

+0

少し助けてくれるのはうれしい! –

1

IDEに何らかの形でコンパイルされたdcuがパスに見つかり、MSBuildがソースのみを見つけることができるパッケージがいくつかあると思います。

MSBuildは、ここで調べたり投稿できるコンパイルログを出力しませんか?

+2

なぜそれが起こりますか?新しいmsbuildベースのビルドの要点は、コマンドラインとIDEビルドで同じ検索パスを使用することです。私はこれがコメントとしては良いと感じています。 –

関連する問題