MSBUILD:如何附加到XML文件

时间:2016-02-10 15:54:37

标签: msbuild xmlpoke

对于ou应用程序,我们使用在构建过程中生成的XML文件(目前使用NAnt)。在XML文件中为每个应用程序模块提供一个部分。现在我想从NAnt切换到MSBuild。

我想将每个模块的模块描述附加到我们的XML文件中。 XML文件应具有以下结构

<?xml version="1.0" encoding="utf-8"?>
<FactoryConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Modules>
    <ModuleConfig>
      <ModuleName>Module1</ModuleName>
      <Description>Module1 Description</Description>
      <AssemblyName>Assembly.Module1</AssemblyName>
      <ModuleClass>Module1.class</ModuleClass>
      <Enabled>true</Enabled>
    </ModuleConfig>
    <ModuleConfig>
      <ModuleName>Module2</ModuleName>
      <Description>Module2 Description</Description>
      <AssemblyName>Assembly.Module2</AssemblyName>
      <ModuleClass>Module2.class</ModuleClass>
      <Enabled>true</Enabled>
    </ModuleConfig>
  </Modules>
</FactoryConfig>

这是我的MSBuild代码

<XmlPeek XmlInputPath="$(WebDir)FactoryConfig.xml" Query="/FactoryConfig/Modules">
  <Output TaskParameter="Result" ItemName="Peeked" />
</XmlPeek>

<Message Text="Subtree: @(Peeked)" />

<XmlPoke XmlInputPath="$(WebDir)FactoryConfig.xml" Query="/FactoryConfig/Modules" Value="@(Peeked)
        &lt;ModuleConfig&gt;
        &lt;ModuleName&gt;Test&lt;/ModuleName&gt;
        &lt;Description&gt;Test&lt;/Description&gt;
        &lt;AssemblyName&gt;Test&lt;/AssemblyName&gt;
        &lt;ModuleClass&gt;Test&lt;/ModuleClass&gt;
        &lt;Enabled&gt;true&lt;/Enabled&gt;
        &lt;/ModuleConfig&gt;">
</XmlPoke>

我可以在xml文件中添加一个部分。但我不知道如何将现有树作为字符串读取并将其与新树合并并将其添加到文件中。

如果模块已经在那里,则应该更换。

1 个答案:

答案 0 :(得分:0)

我认为MSBuild.ExtensionPack.Xml.XmlFile正是你所需要的。使用AddElement / UpdateElement操作。