Установить свойство в отдельный файл

У меня есть файл 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="&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>
Другие вопросы по тегам