Я пытаюсь создать специфичные для среды конфигурации в 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 .