0

我正尝试在Visual Studio 2010中创建特定于环境的配置,并且无法获得其他任何内容都不会发生的转换App.config。这里是我的方案的一个例子:在VS-2010中创建特定于环境的配置文件

  • 加在我的项目配置文件(例如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类似的模式和工作正常,但是这一次没有出现工作。我的期望是,当我执行版本构建时,日志级别应设置为WARN

回答

1

我使用XmlPreprocess tool进行配置文件操作。它在多个环境中使用一个映射文件。您可以通过Excel编辑映射文件。这是非常容易使用。

尝试用Exec任务替换您的TransformXml任务并调用XmlPreprocess工具。