如何将参数从MsBuild传递到TeamCity

时间:2014-05-14 14:45:52

标签: msbuild teamcity

我需要读取一个属性的xml文件,该属性应该在Next teamcity build中使用。 现在我有配置

<Project ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
    <MSBuildCommunityTasksPath>$(MSBuildProjectDirectory)\.build</MSBuildCommunityTasksPath>
    <ExtensionTasksPath>$(MSBuildProjectDirectory)\.build\</ExtensionTasksPath>
</PropertyGroup>

<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.ExtensionPack.tasks"/>
<Target Name="SetValue">

    <!--  ReadAttribute  -->
    <MSBuild.ExtensionPack.Xml.XmlFile TaskAction="ReadElementText" File="my.config" XPath="/configuration/version">
        <Output PropertyName="build.PackageVersion" TaskParameter="Value"/>
    </MSBuild.ExtensionPack.Xml.XmlFile>
    <Message Text="SourceProtocol = $(build.PackageVersion)"/>
</Target>

但是TeamCity中的变量packageversion仍然是空的。

1 个答案:

答案 0 :(得分:1)

你选择的值 - build.PackageVersion是无效的msbuild不喜欢这段时间。

您的路径和扩展程序包与$(MSBuildCommunityTasksPath)\MSBuild.ExtensionPack.tasks混合在一起。应为$(ExtensionTasksPath)\MSBuild.ExtensionPack.tasks.

所以我在本地测试了它 -

<Project ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">


  <UsingTask AssemblyFile="C:\Program Files (x86)\MSBuild\ExtensionPack\4.0\MSBuild.ExtensionPack.dll" TaskName="MSBuild.ExtensionPack.Xml.XmlFile"/>
<Target Name="Build">
    <!--  ReadAttribute  -->
    <MSBuild.ExtensionPack.Xml.XmlFile TaskAction="ReadElementText" File=".\my.config" XPath="/configuration/version">
        <Output PropertyName="PackageVersion" TaskParameter="Value"/>
    </MSBuild.ExtensionPack.Xml.XmlFile>
    <Message Text="SourceProtocol = $(PackageVersion)"/>
</Target>

</Project>

这可行。