【问题标题】:MSBuild properties as variables in VSTS build definitionsMSBuild 属性作为 VSTS 构建定义中的变量
【发布时间】:2017-06-22 11:21:14
【问题描述】:

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

如果它具有内置方式,我希望它,但我可以使用扩展。

【问题讨论】:

  • 你能澄清一下:你有一个道具文件,你想把它提取到变量中吗?那么<PropertyGroup>PropA</..> 可以在后续的构建任务中使用吗?
  • @MartinUllrich,是的,我想要例如 <PropertyGroup> <Version>1.0.0</Version></PropertyGroup> 并希望在构建定义中使用它,例如:$(PropertyGroup.Version) 或类似的东西。

标签: msbuild azure-pipelines-build-task


【解决方案1】:

这可以通过创建一个 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):

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

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

【讨论】:

  • 感谢您的回答,我很清楚我应该怎么做才能让它工作。当它成功时,我会接受你的回答。 :)
  • @MitchelVreman 现在结果如何?你解决了这个问题吗?
  • @MartinUllrich @starain-MSFT 我用安装的扩展解决了我的问题:Variables Tasks Pack。这个扩展给了我任务:使用 XML 中的值设置变量我可以使用 xPath 从 .props 文件中获取我的版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-21
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多