app.config 转换
我非常喜欢在中添加 web.config 转换 Visual Studio 2010。另请参阅Scott Hanselman 最近在 MIX2011 上的演讲。
糟糕的是这个功能(至少看起来)只适用于 Web 项目。
在我们的解决方案中,我们有多个 Windows 服务,它们根据部署的环境连接到不同的数据库。
有没有人想出一种漂亮、整洁的方法来实现类似的“app.config 转换”功能?
注意:我们使用 TFS 2010 以持续集成的方式构建我们的解决方案。
I'm a huge fan of the addition of web.config transformations in Visual Studio 2010. See also Scott Hanselman's recent talk at MIX2011.
What sucks is that this functionality (appears at least) to only be available to web projects.
In our solution we have several Windows Services that connect to a different database dependant on the environment they are deployed under.
Has anyone come up with a nice, tidy way of achieving similar 'app.config transformation' functionality?
Note: We are using TFS 2010 to build our solutions in a Continuous Integration manner.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我知道你已经有了答案,但我偶然发现了 SlowCheetah今天早上这是我迄今为止见过的最好的实施。还有一篇博客文章介绍如何从 CI 服务器运行此功能。
I realize you already have an answer, but I stumbled across SlowCheetah this morning which is the best implementation I've seen to date. There is also a blog post on getting this running from a CI server.
您可以对任何 XML 文件使用 XML 转换功能 - 我们一直这样做。它可以通过 MSBuild 任务获得。
尝试将以下内容添加到您的构建脚本中:
You can use the XML transformation functionality with any XML file - we do this all the time. It's available via an MSBuild task.
Try adding the following to your build script:
我编写了一个很好的扩展来自动化 app.config 转换,就像内置的 Web 应用程序项目一样
配置转换
I wrote nice extension to automate app.config transformation like the one built in Web Application Project
Configuration Transform
卢克·贝内特的回答让我走上了正确的道路。我发现这就是我们的答案 。
FTA(请参阅代码片段链接):
添加指向您的 App.Config 文件的新属性 ProjectConfigFileName
添加 App 版本每个配置的 .Config,即 App.Debug.config 要将它们嵌套在 App.Config 下,请编辑您的 csproj 文件,
在 Microsoft.CSharp.targets 导入后立即将 Microsoft.Web.Publishing.targets 导入到您的 csproj 文件中。
在 AfterBuild 目标中调用 TransformXml 任务。请注意,BeforeBuild 和 AfterBuild 目标默认被注释掉。
Using Luke Bennett's answer to set me off on the right track. I found this to be the answer for us.
FTA (see link for code snippets):
Add a new property ProjectConfigFileName that points to your App.Config file
Add a version of App.Config for each configuration, i.e., App.Debug.config To have them nested under App.Config, edit your csproj file,
Import Microsoft.Web.Publishing.targets into your csproj file right after the Microsoft.CSharp.targets import.
Call the TransformXml task in your AfterBuild target. Note, the BeforeBuild and AfterBuild targets are commented out by default.
如果您有多个客户端程序集并且不想重复相同的配置数据,我创建了 Profigurator。它将接受 JSON 文件作为输入并将设置应用于 app.config 或 web.config。
当我写这篇文章时,它有点粗糙,但我目前正在生产系统上使用它进行部署,并且效果很好。
If you have multiple client assemblies and don't want to duplicate the same configuration data, I created Profigurator. It'll take a JSON file as input and apply the settings to an app.config or web.config.
It's a little rough as I write this, but I am currently using it on a production system for deploys and it works great.