我尝试在Visual Studio 2010中创建特定于环境的配置,并且无法在 App.config 之外的任何其他位置进行转换。以下是我的方案示例:
<log4net> <root> <appender-ref ref="EventLogAppender" /> <level value="DEBUG" /> </root> <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> ... </appender> </log4net>
<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>
<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的类似模式,并且工作正常,但这个似乎不起作用。我的期望是,当我执行发布构建时,日志级别应设置为 WARN 。
答案 0 :(得分:1)
我正在使用XmlPreprocess tool进行配置文件操作。它使用一个映射文件用于多个环境。您可以通过Excel编辑映射文件。它非常易于使用。
尝试用Exec任务替换TransformXml任务并调用XmlPreprocess工具。