Установить свойство в отдельный файл
У меня есть файл 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 в GUID.properties. Если есть более простой способ без Msbuild, я за это, но для меня это выглядело так, как будто мне, вероятно, понадобится Msbuildextensionpack. Я не очень хорошо знаком с XML и Msbuild, поэтому я спрашиваю здесь.
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>