MSBUILD:如何附加到XML文件

MSBUILD:如何附加到XML文件,msbuild,xmlpoke,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:/

对于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>

模块1
模块1说明
组装模块1
模块1.1类
真的
模块2
模块2说明
汇编.Module2
模块2.class
真的
这里是我的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文件添加一个部分。但我不知道如何将现有树作为字符串读取,并将其与新树合并,然后将其添加到文件中


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

我想这正是您需要的。播放AddElement/UpdateElement操作

可能更容易编写一些C#代码来完成此任务,然后从MSBuild调用该代码。是的,您可能正处于开始研究编写自定义MSBuild任务的时候。这也是一个有用的链接: