0

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

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

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

这是我试图为 GUID 设置属性的 XML 中的代码:

<!-- 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 不是很熟悉,这就是我在这里问的原因。

4

1 回答 1

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>
于 2013-10-14T19:55:05.907 回答