XmlMassUpdate - 替换值节点

4
我将使用 XmlMassUpdate 来根据构建版本类型更新配置文件。似乎没有关于如何更新新的 app.config (vs2008) 设置格式的文档。
这是配置部分:
<applicationSettings>
<CTC.Mica.ClientService.Properties.Settings>
  <setting name="PipeName" serializeAs="String">
    <value>\\.\pipe\micaPipe</value>
  </setting>
  <setting name="CTC_Mica_ClientService_MicaWebService_MicaWebService"
      serializeAs="String">
    <value>URL</value>
  </setting>
</CTC.Mica.ClientService.Properties.Settings>
</applicationSettings>

我正在尝试从这个文件更新URL值:

<Debug>
    <setting xmu:key="name" name="CTC_Mica_ClientService_MicaWebService_MicaWebService" serializeAs="String">
      <value>DEVURL</value>
    </setting>
</Debug>

<Test>
    <setting xmu:key="name" name="CTC_Mica_ClientService_MicaWebService_MicaWebService" serializeAs="String">
      <value>TESTURL</value>
    </setting>
</Test>

<Release>
    <setting xmu:key="name" name="CTC_Mica_ClientService_MicaWebService_MicaWebService" serializeAs="String">
      <value>LIVEURL</value>
    </setting>
</Release>

运行脚本后,我可以替换“name”或“serializeAs”属性,但无法替换值节点。
我该如何替换值节点?
谢谢
Tris

应该将此标记为msbuild。 - Chris Chilvers
1个回答

6
以下脚本对我来说很有效(在可能是夜间版本的1.3.0.471上运行):
build.proj
<Project DefaultTargets="Run" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.targets" />
    <Target Name="Run">
        <Delete Condition="Exists('output.xml')" Files="output.xml"/>
        <XmlMassUpdate 
            ContentFile="input.xml"
            ContentRoot="/test"
            SubstitutionsFile="subs.xml"
            SubstitutionsRoot="/substitutions/release"
            MergedFile="output.xml"
            />
    </Target>
</Project>

input.xml

<test>
  <setting name="PipeName" serializeAs="String">
    <value>\\.\pipe\micaPipe</value>
  </setting>
  <setting name="CTC_Mica_ClientService_MicaWebService_MicaWebService" serializeAs="String">
    <value>URL</value>
  </setting>
</test>

subs.xml

<substitutions xmlns:xmu="urn:msbuildcommunitytasks-xmlmassupdate">
    <release>
        <setting xmu:key="name" name="CTC_Mica_ClientService_MicaWebService_MicaWebService" serializeAs="Testing">
            <value>LIVEURL</value>
        </setting>
    </release>
</substitutions>

output.xml(由构建生成)

<test>
  <setting name="PipeName" serializeAs="String">
    <value>\\.\pipe\micaPipe</value>
  </setting>
  <setting name="CTC_Mica_ClientService_MicaWebService_MicaWebService" serializeAs="Testing">
    <value>LIVEURL</value>
  </setting>
</test>

1
我似乎有1.2.0.306版本 - 找不到1.3的任何地方。 - Tristan
我已运行您提供的文件,但当前版本不会替换值节点内容。我在哪里可以找到1.3版本?它似乎没有托管在社区任务网站上。 - Tristan
明白了,谢谢。我已经花了一整天的时间来找出我的脚本有什么问题 :( - Tristan
遇到了同样的问题。版本1.2.0.306无法更新值标签,但在升级到最新的夜间版(1.3.0.477)后一切正常。 - eyesnz
你如何添加多个值节点?<value>1</value> <value>2</value> - Derek Hunziker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接