1

对于您的应用程序,我们使用在构建过程中生成的 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 文件中添加一个部分。但我不知道如何将现有树读取为字符串并将其与新树合并并将其添加到文件中。

如果一个模块已经在那里,它应该被替换。

4

1 回答 1

1

我想MSBuild.ExtensionPack.Xml.XmlFile正是您需要的。使用 AddElement/UpdateElement 操作。

于 2017-03-02T12:02:11.300 回答