1

我有几个项目,我们有 3-5 个不同的 web.config.xxx 应该满足不同的场景,开发者计算机、构建服务器、测试服务器、生产服务器、生产内部、生产外部。xxx 只是描述它所属环境的标记。

这些 web.config 大多相同,连接字符串、集成点、邮件服务器等内容不同,但结构或多或少相同。因此,如果我在 web.config 中添加一个值,我必须将它写到几个文件中,如果我更改该值,我必须在解决方案中的所有 web.configs 中更改它......这很容易我想我以后会这样做,我可能会更改名称,我不确定这是否正确.. 所以我们有时在生产时会错过价值观,这很尴尬。问题是,这是一个应该很容易消除的问题。

如何处理这种情况?我开始研究可以检查构建配置并进行一些简单替换的“预构建事件”,如果我在调试中构建,请将 {db} 更改为 DevDB。如果我为构建服务器构建,我可以进行构建配置并为该环境进行合适的替换。

有没有首选的处理方式?

4

1 回答 1

1

听起来您将从配置转换中受益。

部署网站时,您通常希望已部署应用程序的 Web.config 文件中的某些设置与开发 Web.config 文件不同。例如,您可能想要禁用调试选项并更改连接字符串,以便它们指向不同的数据库。

下面的源代码说明了如何配置在部署期间自动应用的 web.config 转换文件,以便对 web.config 进行更改。

来源:如何:在部署 Web 应用程序项目时转换 Web.config

注意:此技术可以应用于任意数量的部署(Staging、Testing、Production、Foo、Bar 等)。

通常,在一个项目中,您将有 1 个 web.config 文件。与此相关的是,您可能有 web.production.config、web.staging.config 等。每个 web.*.config 文件都是一个转换,其中包含一些用于修改 web.config 中各种值的语言,比如连接字符串。这些转换文件中的每一个都与您通常在部署期间选择的部署选项相关联(Visual Studio 顶部的小下拉菜单,通常设置为“调试”)。

于 2012-06-14T15:23:22.257 回答