2011-06-28 5 views
7

非常に大規模な(300以上の)ソリューションがあり、TFS2010のMSBuildを使用して構築しようとしています。 私たちは、すべての開発マシンでMSBuildを使用してビルドすることができ、TFSを採用しています。TFS2010のMSBuild OutputPathとOutDirに関する問題

我々のコードの構造はそうのようなものです:

bin\Client 
bin\Server 
Framework\ClientFramework.csproj 
Modules\Module1\Project1 
Modules\Module2\Project2 
etc. 

各プロジェクトにはビンクライアントまたはサーバのディレクトリにコードをビルドする相対OutputPathを持っています。たとえば、Project1.csprojのOutputPathは ".. \ .. \ bin \ Client"です。 OUTDIR

    の上に相対OutputPathを解決するとき

    C:\Builds\MyProject\Binaries\ 
    

    だから物事が混乱してきている。

    は、私たちはTFS MSBuildのでOUTDIRが固定パスに設定されている問題を持っているように見えます
  • ClientFrameworkはCに行く:\は\ MyProjectと\バイナリ\を構築します.. \ビン\クライアント
  • Project1のはCに行く:\は\ MyProjectと\バイナリ\を構築します.. \ .. \ビン\クライアント

サードパーティのDLLをbinフォルダにコピーするポストビルドイベントもありますが、これらのパスも適切に解決できません。

私たちが行っている解決策は、既存のbin \ Client、bin \ Server構造にすべてを組み込み、フォルダをbinからbinariesに移動することだと思います。

これを達成する方法や私たちがどのように働くべきかについてのアイディアは高く評価されていますが、VS、開発者コマンドラインビルド、およびCC.netで動作するので、

+0

マイクロソフトの記事はここにあります:ビルドシステムがバイナリを配置する場所http://msdn.microsoft.com/en-us/library/ff977206.aspx –

答えて

6

私は、MSDNの答えを見つけました:http://msdn.microsoft.com/en-us/library/ff977206.aspx

+8

詳細を教えてください。リンクを投稿しても、今後の訪問者には役立ちません。そのリンクがあなたの問題を具体的にどのように解決したかを説明します。 –

+0

今後の訪問者:ビルド(基本的にビルドワークフローを定義するXMLファイル)をカスタマイズし、単に "OutDir"パラメータを削除する必要があります。 XMLファイルをプレーンテキストとして開き、OutDirを検索して削除します。私のケースでは、単に 'OutDir =" [outputDirectory] ​​"'を削除しましたが、現在、各プロジェクトで指定されたOutputPathに出力ファイルをコピーするというデフォルトの動作が使用されます。今日の(2016年)現在、.Net 4.5ではもう1つの解決策があります。トップに投票した回答と 'GenerateProjectSpecificOutputFolder' MSBuildパラメータを参照してください。 – ken2k

7

これは「TFS OUTDIR」のGoogle検索でポップアップする最初のリンクですので、私は新しいソリューションを提供しなければなりません。私はOutDir、OutputPathで一日を過ごし、TeamBuildOutDirでオーバーライドしました。より良い解決策は、MSBuildプロパティGenerateProjectSpecificOutputFolderを設定することです。 .NET 4.5に付属しています。ここをクリックしてください:http://blog.codeassassin.com/2012/05/10/override-the-tfs-team-build-outdir-property-net-4-5/

+0

これには、1つのディレクトリにつき1つのソリューションの制限がありますが、これがセットアップの場合は有効な答えです。 +1。 – DaveShaw

+0

リンクが壊れています。それを修正できますか? –

+0

リンクは引き続き機能します。 DDOS攻撃のために昨日のことだったかもしれません。 –

関連する問題