【问题标题】:Creating Environment-specific configuration files in VS-2010在 VS-2010 中创建特定于环境的配置文件
【发布时间】:2012-01-13 12:16:50
【问题描述】:

我正在尝试在 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

【问题讨论】:

    标签: visual-studio-2010 configuration msbuild build-automation


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 2012-02-14
      • 2013-01-12
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多