我非常喜欢在Visual Studio 2010中添加web.config transformations。另请参阅Scott Hanselman's recent talk at MIX2011。
这个功能(至少看起来)只能用于Web项目。
在我们的解决方案中,我们有几个Windows服务,它们根据部署的环境连接到不同的数据库。
有没有人想出一种实现类似'app.config转换'功能的漂亮,整洁的方法?
注意:我们正在使用TFS 2010以持续集成的方式构建我们的解决方案。
答案 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(请参阅代码段的链接):
添加一个指向App.Config文件的新属性ProjectConfigFileName
为每个配置添加一个App.Config版本,即App.Debug.config要将它们嵌套在App.Config下,编辑csproj文件,
在Microsoft.CSharp.targets导入后立即将Microsoft.Web.Publishing.targets导入csproj文件。
在AfterBuild目标中调用TransformXml任务。请注意,默认情况下会注释掉BeforeBuild和AfterBuild目标。
答案 4 :(得分:0)
如果您有多个客户端程序集但又不想复制相同的配置数据,我创建了Profigurator。它将把JSON文件作为输入并将设置应用于app.config或web.config。
我写这篇文章有点粗糙,但我目前在生产系统上使用它进行部署,效果很好。