在VS-2010中创建特定于环境的配置文件

时间:2012-01-13 12:16:51

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

我尝试在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 Project文件以包含以下目标
<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 个答案:

答案 0 :(得分:1)

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

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