2014-05-14 2 views
0

하나의 속성에 대해 xml 파일을 읽어야하며이 속성은 다음 팀십 빌드에서 사용해야합니다. 대한 는 지금은 구성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

value-build.PackageVersion에 대한 이름 선택이 유효하지 않습니다. msbuild는 마침표와 다릅니다.

귀하의 경로와 확장 팩은 $(MSBuildCommunityTasksPath)\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> 

을이 작품 -해야

$(ExtensionTasksPath)\MSBuild.ExtensionPack.tasks. 그래서 내가 로컬로 테스트했습니다.

+0

Okey 질문은 msbuild에서 값을 반환하는 방법과 동일합니다. –

관련 문제