app.config转换

时间:2011-05-31 11:50:02

标签: visual-studio deployment slowcheetah

我非常喜欢在Visual Studio 2010中添加web.config transformations。另请参阅Scott Hanselman's recent talk at MIX2011

这个功能(至少看起来)只能用于Web项目。

在我们的解决方案中,我们有几个Windows服务,它们根据部署的环境连接到不同的数据库。

有没有人想出一种实现类似'app.config转换'功能的漂亮,整洁的方法?

注意:我们正在使用TFS 2010以持续集成的方式构建我们的解决方案。

5 个答案:

答案 0 :(得分:15)

您可以将XML转换功能与任何XML文件一起使用 - 我们始终这样做。它可以通过MSBuild任务获得。

尝试将以下内容添加到构建脚本中:

<UsingTask TaskName="TransformXml"
           AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>

<TransformXml Source="Path\To\Your\Xml.config"
              Transform="Path\To\Your\Xml.$(Configuration).config"
              Destination="Path\To\Your\Output.config" />

答案 1 :(得分:15)

我意识到你已经有了答案,但今天早上偶然发现了SlowCheetah,这是我见过的最好的实施方式。从CI服务器运行时还有一个blog post

答案 2 :(得分:9)

我编写了一个很好的扩展来自动化app.config转换,就像Web应用程序项目中内置的一样 Configuration Transform

答案 3 :(得分:3)

使用Luke Bennett的回答让我走上正轨。我found this to be the answer对我们来说。

FTA(请参阅代码段的链接):

  1. 添加一个指向App.Config文件的新属性ProjectConfigFileName

  2. 为每个配置添加一个App.Config版本,即App.Debug.config要将它们嵌套在App.Config下,编辑csproj文件,

  3. 在Microsoft.CSharp.targets导入后立即将Microsoft.Web.Publishing.targets导入csproj文件。

  4. 在AfterBuild目标中调用TransformXml任务。请注意,默认情况下会注释掉BeforeBuild和AfterBuild目标。

答案 4 :(得分:0)

如果您有多个客户端程序集但又不想复制相同的配置数据,我创建了Profigurator。它将把JSON文件作为输入并将设置应用于app.config或web.config。

我写这篇文章有点粗糙,但我目前在生产系统上使用它进行部署,效果很好。