管理每个环境的配置

Manage configuration per environment

如何指示 app.config 对每个环境使用不同的引用?

例如:我有一个包含 3 个文件夹的配置文件夹 - Dev、QA 和 Prod

- 配置
- 开发
* AppSettings.config
- 质量保证
* AppSettings.config
- 产品
* AppSettings.config

我的app.config有这个参考

<appSettings configSource="Configuration\Dev\AppSettings.config" />

我想要类似的东西

<appSettings configSource="Configuration\[$ENV]\AppSettings.config" />

$ENV 配置应在 appSettings 中定义,如果不可能,则应在其他外部源中定义。

此外,管理它的最佳做法是什么? (不使用花哨的 Chef 服务器或配置服务器)。

**我也在努力避免 post 脚本操纵。**

您需要使用 XML 配置文件转换(参见 this MSDN article)。

由于 Web.config 实现了默认配置转换,您需要使用 Visual Studio 扩展才能将此功能应用于任何配置文件。 Slow Cheetah 不错。

另一个解决方案是使用环境变量: Using environment variables for .config file in .NET

然后bootstrap应用程序在运行时更改app.config http://www.codeproject.com/Articles/12589/Modifying-Configuration-Settings-at-Runtime