2017-06-22 45 views
1

有没有办法让我的MSBuild的特性(从.props文件)作为在Visual Studio团队服务构建定义变量?MSBuild的属性,如VSTS变量构建定义

我想它,如果它有一个内置的方式,但我确定有一个扩展。

+0

你能澄清:你有一个道具文件,并希望将其解压到变量?所以'PropertyGroup> PropA'将在随后的构建任务中可用? –

+0

@MartinUllrich,是的,我想例如'<的PropertyGroup> 1.0.0'并希望在构建定义,例如使用它:'$(PropertyGroup.Version)'或者类似的东西。 –

回答

1

这可以通过创建记录含有的VSTS logging commands形式所需要的属性信息MSBuild项目(或目标在一个现有的项目)来完成。然而,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任务(或dotnet msbuild在Linux机器上使用。 NET Core工具):

MSBuild task

出于演示的目的,我补充说,使用这些变量的PowerShell任务:

example PowerShell task

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

build log

+0

感谢您的回答,我清楚我应该怎么做才能让它工作。当它成功时,我会接受你的回答。 :) –

+0

@MitchelVreman现在的结果是什么?你解决这个问题吗? –

+0

@MartinUllrich @ starain-MSFT我固定我的问题与安装extention:[变量任务包(https://marketplace.visualstudio.com/items?itemName=YodLabs.VariableTasks&targetId=a0d69947-cbad-4c04-83eb-9e08fe68f333) 。这个扩展给我的任务:_从XML_中设置变量的值我可以从'.props'文件中用xPath获取我的版本。 –

相关问题