将属性设置在单独的文件中

时间:2013-10-14 19:00:09

标签: xml msbuild msbuildextensionpack

我有一个XML文件,它将GUID存储为属性,我想从另一个XML文件中设置此属性值。我注意到Msbuild可能会这样做。我想出了如何阅读这个属性,但是我在设置值和保存文件时遇到了麻烦。

以下是我的XML文件中的代码,它将GUID存储为属性(文件名为GUID.properties):

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  
    <PropertyGroup>    
        <GUIDProperty>NULL</GUIDProperty>
    </PropertyGroup>
</Project>

以下是我的XML中的代码,我正在尝试为GUID设置属性:

<!-- Create GUID for Installation -->
    <MSBuild.ExtensionPack.Framework.Guid TaskAction="Create">
    <Output TaskParameter="FormattedGuidString" PropertyName="GuidString" />
    </MSBuild.ExtensionPack.Framework.Guid>    

<!-- Set GUIDProperty in GUID.property -->
    <MSBuild.ExtensionPack.Xml.XmlFile TaskAction="UpdateElement" File="$(MSBuildProjectDirectory)\GUID.properties" XPath="GUIDProperty" InnerText="$(GuidString)"/>

所以,我要做的就是在GUID.properties中设置GUID属性。如果没有Msbuild有一个更简单的方法,我就是这样,但对我来说,看起来我可能需要Msbuildextensionpack。我对XML和Msbuild并不是非常熟悉,这就是我在这里问的原因。

1 个答案:

答案 0 :(得分:1)

我实际上并不认为你需要msbuildextensionpack。 你可以只使用msbuild来实现。

示例:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<Target Name="UpdateGuid">
    <PropertyGroup>
        <_xmlFile>guid.properties</_xmlFile>
        <_newGuid>$([System.Guid]::NewGuid())</_newGuid>
    </PropertyGroup>
    <XmlPoke Namespaces="&lt;Namespace Prefix='msb' Uri='http://schemas.microsoft.com/developer/msbuild/2003'/&gt;"
             XmlInputPath="$(_xmlFile)" 
             Query="/msb:Project/msb:PropertyGroup/msb:GUIDProperty"
             Value="$(_newGuid)" />
</Target>
</Project>
相关问题