有没有办法让我的MSBuild属性(来自.props
文件)作为Visual Studio Team Services中构建定义中的变量?
如果它有内置方式我想它,但我可以使用扩展名。
答案 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
)“构建”此项目文件:
出于演示目的,我添加了一个使用这些变量的PowerShell任务:
然后构建按预期使用脚本中的变量。请注意,设置变量的日志行可能不会显示在构建日志中。