2013-11-01 23 views
6

VS2012プロジェクトファイルでビルド前/ビルド後イベントを使用してビルドタスクを実行しています。 これはローカルでは問題なく動作しますが、TFS 2012 Build Serverから問題が発生しています。TFSビルドサーバーのProject TargetDir

各プロジェクトの$(TargetDir)は、それぞれ独自の/binフォルダに設定されています。

ただし、これはビルドされたすべてのバイナリを統合するソリューションルートフォルダの外にある/binというフォルダに設定されています。

これはまったく必要なものではありません。
ビルドサーバは、VS2012ビルドと同じ方法で動作します。です。
ビルドテンプレートにこれを変更できる設定はありません。

ビルドサーバがバイナリをプロジェクトごとに別々の/binフォルダに出力する方法を教えてもらえますか?

は(FYI、ビルド・サーバーは.slnファイルではなく、いくつかの追加のMSBuildスクリプトを構築するために設定されている。)

答えて

2

のMSBuildとTFSBuildは、2社の異なる製品ですので、これは起こる - あなたのローカルマシン上のMSBuildはあなたを構築するために使用されますプロジェクト。

私がこの問題を解決するために使用した方法の1つは、もう少し冗長で、ProjectDirConfigurationNameの組み合わせを使用する方法です。ここで私はいくつかの設定ファイルをコピーしています実際の例です:

robocopyを "$(PROJECTDIR)ビン\ $(ConfigurationName)" に "...ターゲットフォルダ..." * .configを

はこれが原因含むMicrosoftの規則に関係なく、アセンブリはAnyCPUまたはx86/64を対象としているかどうかの作品(私はターゲットパスを削除したノートは、一例に不可欠ではなかったです)フォルダ名の一部としてのスラッシュ。

+0

事がTFSBuildは、任意のbinフォルダを作成していないということです$(ProjectDir)にはまったくありません。これはobjフォルダと、$(SolutionDir)と$(ProjectDir)の外にある統合されたbinフォルダにのみ構築されます。しかし、私は$(TargetDir)を使って統合されたbinフォルダを探しました。あなたのご意見ありがとうございます。 –

7

TFSとVisual Studioはどちらもmsbuildを使用してソリューションをビルドしますが、ビルド出力のフォルダ構造は異なります。 TFSビルドテンプレートがビルドエージェントの "バイナリ"フォルダを指すように$(OutDir)プロパティをオーバーライドするため、出力がVSと同じ構造になっていないのが原因です。 TFSでは

2012 /あなたが/p:GenerateProjectSpecificOutputFolder=true

は、詳細はthis blogを参照してくださいビルド定義でMSBuildの引数を渡すことで、この動作を制御することができ、.NET 4.5

+0

これは私が必要とするほとんどです。しかし、私のPRE-BUILDイベントは依然として壊れていますが、特定のプロジェクトbin \ Debugフォルダーが遅すぎるようです。私は依存関係を正しく設定しており、それは私のマシン上で動作します。何か案は? –

関連する問題