MSBuild属性作为VSTS构建定义中的变量

时间:2017-06-22 11:21:14

标签: msbuild azure-pipelines-build-task

有没有办法让我的MSBuild属性(来自.props文件)作为Visual Studio Team Services中构建定义中的变量?

如果它有内置方式我想它,但我可以使用扩展名。

1 个答案:

答案 0 :(得分:2)

这可以通过创建一个msbuild项目(或现有项目中的目标)来完成,该项目以VSTS logging commands的形式记录包含所需属性的消息。但是,MSBuild不能“枚举”已定义的属性,因此这仅适用于众所周知的属性 - 这可能有助于避免意外冲突(即使环境变量是MSBuild中的“属性”)。

给出样本some.props文件:

<Project>
  <PropertyGroup>
    <PackageId>a.package.id</PackageId>
    <Version>1.2.3</Version>
    <Description>I am your test project</Description>
  </PropertyGroup>
</Project>

示例emitvars.proj

<Project>
  <Import Project="some.props" />
  <Target Name="Build">
    <Message Importance="high" Text="##vso[task.setvariable variable=PackageId]$(PackageId)" />
    <Message Importance="high" Text="##vso[task.setvariable variable=Version]$(Version)" />
    <Message Importance="high" Text="##vso[task.setvariable variable=Description]$(Description)" />
  </Target>
</Project>

然后可以在MSBuild任务(或使用.NET Core工具的Linux机器上dotnet msbuild)“构建”此项目文件:

MSBuild task

出于演示目的,我添加了一个使用这些变量的PowerShell任务:

example PowerShell task

然后构建按预期使用脚本中的变量。请注意,设置变量的日志行可能不会显示在构建日志中。

build log