2009-08-18 2 views
4

Я пытаюсь использовать XmlMassUpdate для обновления моих файлов конфигурации на основе типа версии. Кажется, нет документации о том, как обновлять новые форматы настроек app.config (vs2008) в любом месте.XmlMassUpdate - Заменить значение Node

Это раздел конфигурации:

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

Запуск скрипт, я могу ответить туз либо атрибут «имя», либо «serializeAs», но не узел значения.

Как я могу заменить узел значений?

С уважением

Трис

+0

Если вероятно маркировать это как MSBuild –

ответ

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> 

вход .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 в любом месте. – 2009-08-18 15:37:08

+0

Я запустил файлы, которые вы поставили, и текущая сборка я не заменяю содержимое узлов значений. Где я могу найти сборку 1.3? Он, похоже, не размещен на сайте задач сообщества. – 2009-08-18 15:48:33

+0

http://msbuildtasks.tigris.org/ внизу - новейшая ночная сборка. –

Смежные вопросы