2014-05-14 40 views
0

我需要为一个属性读取xml文件,并且该属性应该在Next teamcity构建中使用。 现在我拥有的配置如何将参数从MsBuild传递到TeamCity

<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> 

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

回答

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> 

和工作原理。

+0

安全问题是一样的如何从msbuild返回值;) –