我有一个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并不是非常熟悉,这就是我在这里问的原因。
答案 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="<Namespace Prefix='msb' Uri='http://schemas.microsoft.com/developer/msbuild/2003'/>"
XmlInputPath="$(_xmlFile)"
Query="/msb:Project/msb:PropertyGroup/msb:GUIDProperty"
Value="$(_newGuid)" />
</Target>
</Project>