如何使用多个.config文件在VS2013中发布?

时间:2014-12-11 13:57:23

标签: .net visual-studio web-config

我有一个包含三个主要.config文件(web.config,one.config和two.config)的项目,带有multi sub .config(web.debug.config,web.test.config,one.debug.config, one.test.config,two.debug.config,two.test.config等。)

我在VS2013中发布了一个发布,我可以选择我将使用的巫婆web.XXX.config文件,它工作正常。但是如何选择one.XXX.config和two.XXX.config文件?

1 个答案:

答案 0 :(得分:0)

“首先,您需要在构建服务器上安装Visual Studio Web应用程序构建目标。这可以通过安装Visual Studio的快速版本或Visual Studio Shell Redistributable Package来实现。

然后,在项目中创建一个App.config文件。我放在一个名为“Config”的文件夹中,以避免Visual Studio的任何自动行为。然后,创建您的转换文件,App.Debug.config,App.Release.config以及您需要的任何内容(我通常不使用它们,而是使用Test,Prod,Acceptance等)。现在,这些都将放在App.config旁边,而不像Web.config转换那样链接到它。不用担心,我们很快就会解决这个问题!

接下来,卸载您的项目,然后编辑.csproj文件。首先,我们将修复文件的链接。只需在每个Item中添加DependentUpon元素即可完成此操作。假设你有这个:

<None Include="Config\App.config" />
<None Include="Config\App.Debug.config" />

只需将其更改为:

<None Include="Config\App.config" />
<None Include="Config\App.Debug.config">
  <DependentUpon>App.config</DependentUpon>
</None>

现在,让我们继续前进。为了使msbuild转换你的配置文件,我们需要一个构建事件。在文件末尾添加

<UsingTask TaskName="TransformXml" <br>   AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterBuild">
  <TransformXml Source="Config\App.config"
                Transform="Config\App.$(Configuration).config"
                Destination="$(OutputPath)\$(AssemblyName).$(OutputType).config" />
</Target>

来源:http://johan.driessen.se/posts/Applying-MSBuild-Config-Transformations-to-any-config-file-without-using-any-Visual-Studio-extensions