0

我试图弄清楚为什么我的构建失败了,所以在我添加的构建调用的 .proj 中:

<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: .

所以似乎只有 $(SystemDrive) 在构建过程中持续存在。而且我在 MSBuild args 中设置的参数似乎甚至没有正确设置(SrcDir)。如何在构建过程中访问这些变量,以便知道我的文件在哪里?我需要调用一些其他程序(即 attrib)并传入我的文件的位置,但似乎没有任何东西会持续存在。

根据这篇文章,我确信 TF_BUILDDIRECTORY 可以工作,但它没有。

然后我尝试使用这篇文章说这应该有效:

<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.
4

2 回答 2

0

您需要通过 MSBuild 参数将该值传递给 MSBuild 任务。

  1. 在项目文件的 PropertyGroup 部分定义属性,例如<PropertyGroup><SourceDir></SourceDir><BuildDefinitionName></BuildDefinitionName></PropertyGroup>
  2. 指定 MSBuild 参数:/p:SourceDir="$(TF_BUILD_BUILDDIRECTORY)" /p: BuildDefinitionName="$(TF_BUILD_BUILDDEFINITIONNAME)"

另一方面,MSBuild 中有一些变量,你可以查看这个帖子:我如何在 msbuild 脚本中获取当前目录?

于 2017-10-02T07:35:21.220 回答
0

您需要使用XAML 构建环境变量

其中一些值不可用,但您可以获得其中一些值:

  • TF_BUILD_BUILDDIRECTORY构建代理工作目录。例如:C:\Build\BuildBot3\CoolApp\CIBuild。
  • TF_BUILD_BUILDNUMBER构建的构建号。例如:CIBuild_20130613.6。
  • TF_BUILD_SOURCESDIRECTORY构建代理工作目录的源子目录。此目录包含您的源代码。例如:C:\Build\BuildBot3\CoolApp\CIBuild\src。
于 2017-09-29T20:17:26.170 回答