2011-05-31 28 views
24

我是在Visual Studio 2010中添加web.config transformations的狂热粉丝。另请参见Scott Hanselman's recent talk at MIX2011app.config转换

有趣的是,该功能(至少出现)只能用于Web项目。

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

有没有人想出一个很好的,完整的方式来实现类似的'app.config转换'功能?

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

+0

之前重命名为web.config,然后重新命名回来?这会起作用吗? – 2011-05-31 11:53:52

+4

Off topic - 但是你看过@appharbor的家伙看过这个工具吗?http://webconfigtransformationtester.apphb.com/ – superlogical 2011-05-31 12:12:14

+0

@Jake Scott - 我没有! +1为酷链接 – isNaN1247 2011-05-31 12:15:22

回答

14

您可以对任何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" /> 
+2

而不是这SlowCheetah应该使用http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5 – 2012-04-28 02:50:14

+5

这是一个非常明确的声明 - 你说它*应该*在没有限定的情况下使用,请您进一步解释?从我所看到的情况来看,SlowCheetah适用于当你按下F5时在VS内转换。当F5无用时,此处的上下文是CI。 SlowCheetah可能支持CI方案,但是它还提供了什么,使这种方法自动比这个更好?我不是说这不是更好,只是认为它需要证明:) – 2012-05-15 12:20:28

+0

当然,我应该澄清。 SlowCheetah由两部分组成:用于创建转换/预览/等的VS UI组件以及用于执行所有转换的MSBuild任务/目标。所以VS组件只需要将SlowCheetah添加到项目中。从CI服务器/命令行执行这些操作非常简单。请访问我的博客http://sedodream.com/2011/12/12/SlowCheetahXMLTransformsFromACIServer.aspx。希望清除它:) – 2012-05-15 16:49:31

3

使用卢克·贝内特的回答把我关在正确的轨道上。我为我们提供了found this to be the answer

FTA(见链接的代码片段):

  1. 添加一个新的属性ProjectConfigFileName指向你的app.config文件

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

  3. 在Microsoft.CSharp.targets导入之后将Microsoft.Web.Publishing.targets导入到您的csproj文件中。

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

15

我知道你已经有一个答案,但我今天早上这是我见过的迄今为止最好的实现跨越SlowCheetah绊倒了。还有一个blog post从CI服务器获取它的运行。

+0

很好找,我一定会去看看 – isNaN1247 2012-01-09 15:14:38

+0

是的,很好找。我的app.config现在会自动用适当的SQL Server连接字符串进行更新,当我部署时,或者当我点击F5运行应用程序时。很棒的发现! – 2013-01-09 13:33:07

+0

FWIW,SlowCheetah的积极开发和支持现已停止。作者敦促感兴趣的各方投票,而不是要添加Visual Studio的功能。在这里看到他的博客文章:http://sedodream.com/2014/08/11/SlowCheetahIsGoingIntoMaintenanceMode.aspx – Bampfer 2014-12-19 17:10:04

9

我写了很好的扩展自动化改造的app.config像一个内置的Web应用程序项目 Configuration Transform

+0

不错!我还没有尝试过,但原则上看起来不错。 – isNaN1247 2012-05-28 07:45:32

+0

它作为一个魅力:-) – 2016-03-22 13:55:43

+0

在我的情况下,我看到空文件,而不是我正在寻找的变换,例如,我的app.cdebug.config是(我的假设是会有标签,我可以预览更改)<?xml version =“1.0”?> <! - 有关使用app.config转换的更多信息,请访问http://go.microsoft.com/fwlink/?LinkId=125889 - > BeHappy 2017-02-17 21:14:53

0

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

这是一个有点粗糙,因为我写这个,但我目前使用它在生产系统部署,它很好。

相关问题