2017-09-29 8 views
0

私のビルドが失敗している理由を調べようとしていますので、ビルドコールの.projに追加しました:TFSビルド(TFSサーバー2017とビルドエージェント2013)でビルドパラメータを保持する方法

<Message Text="System Drive: $(SystemDrive)"/> 
<Message Text="BuildAgtentId: $(BuildAgentId)" /> 
<Message Text="BuildDefinitionPath: $(BuildDefinitionPath)" /> 
<Message Text="SourceDir: $(SourceDir)" /> 
<Message Text="SrcDir: $(SrcDir)" /> 
<Message Text="BuildDefinitionPath: $(BuildDefinitionPath)." /> 
<Message Text="BuildDefinitionId: $(BuildDefinitionId)." /> 
<Message Text="TF_BUILD_BUILDDIRECTORY: $(TF_BUILD_BUILDDIRECTORY)" /> 

これで、$(SourceDir)がC:\ Builds \ $(BuildDefinitionId)に解決されると仮定しました。これは、エージェント用の作業ディレクトリ設定にあるためです。私はまた、MSBuildのパラメータに変数を設定:

/p:SrcDir=$(SourceDir) 

をしかし.projが、ここで実行したときに私の出力です:

System Drive: C: 
BuildAgtentId: 
BuildDefinitionPath: 
SourceDir: 
SrcDir: $(SourceDir) 
BuildDefinitionPath: . 
BuildDefinitionId: . 
TF_BUILD_BUILDDIRECTORY: . 

は、だから、としてだけで$(システムドライブ)がビルド中に持続すると思われます。また、MSBuildの引数に設定されたパラメータは、正しく設定されていないようです(SrcDir)。ビルド中にこれらの変数にアクセスするにはどうしたらよいですか?他のプログラム(つまりattrib)を呼び出してファイルの場所を渡す必要があり、何も存続しないようです。

記事thisに基づいて、私はTF_BUILDDIRECTORYが機能することを確かめましたが、そうではありません。

私は、これは動作するはずと言いthis記事使用してみました:

<GetBuildProperties TeamFoundationServerUrl="$(TFSTeamFoundationServerUrl)" BuildUri="$(BuildUri)"> 
    <Output TaskParameter="BuildDirectory" PropertyName ="TFSBuildDirectory" /> 
    <Output TaskParameter="TeamProject" PropertyName="TFSTeamProject" /> 
</GetBuildProperties> 

<Message Text="BuildLocation: $(TFSBuildDirectory)." /> 
<Message Text="TeamProject: $(TFSTeamProject)."/> 

をそしてTeamProjectの作品ながら、BuildDirectoryはしていません。だから私はこれを得る:

BuildLocation: . 
TeamProject: MDRVIDEOTOUCH. 

答えて

0

あなたはXAML build environment variablesを使う必要があります。これらの値の

一部が使用できませんが、あなたはそれらのいくつか得ることができます。

  • TF_BUILD_BUILDDIRECTORYビルドエージェントの作業ディレクトリを。次に例を示します。C:¥Build¥BuildBot3¥CoolApp¥CIBuild。
  • TF_BUILD_BUILDNUMBERビルドのビルド番号。例:CIBuild_20130613.6。
  • TF_BUILD_SOURCESDIRECTORYビルドエージェントの作業ディレクトリのsourcesサブディレクトリ。このディレクトリにはソースコードが含まれています。次に例を示します。C:¥Build¥BuildBot3¥CoolApp¥CIBuild¥src。
+0

私はTF_BUILD_BUILDDIRECTORYを試してみましたが、それは間違って参照していない限り、空白にも見えます。私は$(TF_BUILD_BUILDDIDI RECTORY) - そうですか? –

0

MSBuildの引数でMSBuildタスクに値を渡す必要があります。

  1. 例えば<PropertyGroup><SourceDir></SourceDir><BuildDefinitionName></BuildDefinitionName></PropertyGroup>
  2. は、MSBuildの引数を指定して、プロジェクトファイルのPropertyGroupセクションのプロパティを定義します。/p:SourceDir="$(TF_BUILD_BUILDDIRECTORY)" /p: BuildDefinitionName="$(TF_BUILD_BUILDDEFINITIONNAME)"

一方、いくつかの変数は、MSBuildのでありますが、あなたはこのスレッドを確認することができます:How can I get current directory in msbuild script?

+0

ありがとうございますが、動作しません。ビルド定義に/ p:SourceDir = "$(TF_BUILD_BUILDDIRECTORY)"を設定し、次にの値を取得すると、.projファイルにInitVariables: SourceDir:$(TF_BUILD_BUILDDIRECTORY)を設定します。したがって、TF_BUILD_BUILDDIRECTORYは翻訳されていません。リテラルとして扱われています。 –

+0

@Ben_G MSBuildで直接SourceDirを使用する必要があります。たとえば、次のようになります。 ' ($(TF_BUILD_BUILDDIRECTORY)はTFSビルドアクティビティで使用されます) –

+0

@Ben_Gそれを試した後の結果は何ですか? –

関連する問題