Создание специфичных для среды файлов конфигурации в VS-2010 - PullRequest
0 голосов
/ 13 января 2012

Я пытаюсь создать специфичные для среды конфигурации в Visual Studio 2010 и не могу заставить преобразования происходить ни для чего, кроме App.config .Вот пример моего сценария:

  • Добавлен файл конфигурации в мой проект ( например, Configs \ Log4Net.config ).Для файла установлено значение «Содержимое» и «Копировать всегда»
<log4net>
  <root>
    <appender-ref ref="EventLogAppender" />
    <level value="DEBUG" />
  </root>
  <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
  ...
  </appender>
</log4net>
  • Добавлен файл конфигурации преобразования ( например, Configs \ Log4Net.Release.config )
<log4net xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <root>
    <level value="WARN" xdt:Transform="SetAttributes" xdt:Locator="XPath(log4net/root/level[@value!='WARN'])" />
  </root>
</log4net>
  • Изменен файл проекта VS для включения следующей цели
<UsingTask TaskName="TransformXml" 
           AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

<Target Name="AfterPublish" Condition="exists('Configs\Log4Net.$(Configuration).config')">
  <TransformXml Source="Configs\Log4Net.config" 
                Destination="$(OutputPath)\Configs\Log4Net.config" 
                Transform="Configs\Log4Net.$(Configuration).config" />
</Target>

Я следовал аналогичному шаблону для App.config, и он отлично работает, но этот, похоже, не работает.Я ожидаю, что при сборке Release уровень журнала должен быть установлен на WARN .

1 Ответ

1 голос
/ 13 января 2012

Я использую XmlPreprocess tool для манипулирования файлами конфигурации.Он использует один файл сопоставления для нескольких сред.Вы можете редактировать файл сопоставления в Excel.Он очень прост в использовании.

Попробуйте заменить задачу TransformXml на задачу Exec и вызвать инструмент XmlPreprocess.

...