web-dev-qa-db-ja.com

TFS2015ビルドアーティファクトを1つのディレクトリに公開

_TFS 2010_から_TFS 2015_にアップグレードしたばかりで、「vNext」ビルド/ワークフロー形式でXAML-Build-Definitionを再作成しています。

古いビルドでは、元のディレクトリ構造なしで、すべてのファイル(DLL)を1つのディレクトリにフラットに出力することができました。

これは、新しいTFS 2015ビルドフレームワークでも引き続き可能ですか?

私は次の_Publish Build Artifact_-設定を持っています:

_Artifact Type: File Share_

Path: \\server\tfslib\$(Build.DefinitionName)\$(Build.DefinitionName)_$(Build.BuildNumber)

問題は、元のソリューションのディレクトリ構造がPathで指定された出力ディレクトリに保持されることです。サブツリー全体なしで出力を取得するにはどうすればよいですか?

回避策として、現在_Publish Build Artifact_の後にPowershellステップを使用してこれを行っていますが、公開プロセス自体の間にこれを行うと便利です。

10
Ole Viaud-Murat

この機能を実現するには、「ファイルのコピー」タスクを使用して、その中のソースフォルダーを指定できます。詳細については、この質問を参照してください: Visual Studioチームサービスからのデプロイ時にターゲットディレクトリに1つのファイルをコピーします

7

これは引き続き可能です。次のコマンドライン引数をVisualStudioBuildまたはMsBuildタスクに渡すことができます。

_/p:OutputPath="$(Build.BinariesDirectory)"
_

これにより、古いXAMLビルドから慣れていたように、すべての出力をバイナリディレクトリにリダイレクトするようにビルドタスクに指示します。

または、Visual Studio MarketPlaceのmy MsBuild Helper task を使用して出力パスを構成し、$(MsBuildAdditionalArguments)変数をMsBuildまたはVisualStudioBuildの追加の引数入力に追加します。

MsBuildヘルパータスクenter image description here

VisualStudioビルド/ MsBuildタスクenter image description here

4
jessehouwing

また、このMSBuild引数を与えてみてください

 /p:GenerateProjectSpecificOutputFolder=true /p:OutDirWasSpecified=true
 /p:OutputPath=$(Build.BinariesDirectory)
1
Dilaksha A