2017-06-22 70 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獲取我的版本。 –