我有几个项目,我们有3-5个不同的web.config.xxx,应该满足不同的场景,开发人员计算机,构建服务器,测试服务器,生产服务器,生产内部,生产外部。xxx只是一个描述它所属环境的标记。
这些web.configs基本相同,连接字符串、集成点、邮件服务器等内容不同,但结构大同小异。因此,如果我在web.config中添加一个值,我必须将它写到几个文件中,如果我更改该值,我必须在解决方案中的所有web.configs中更改它。很容易认为我以后会这样做,我可能会更改名称,但我不确定这样做是否正确。因此,当我们谈到生产时,我们有时会错过价值,这是令人尴尬的。问题是,这是一个应该很容易消除的问题。
如何处理这种情况?我开始考虑“构建前事件”,它可以检查构建配置并进行一些简单的替换,如果我在调试中构建,请将{db}更改为DevDB。如果我为build-server构建,我可以有一个build-configuration,并为那个环境做适当的替换。
有没有更好的方式来处理这个问题?
发布于 2012-06-14 23:23:22
听起来你会从配置转换中受益。
在部署网站时,您通常希望部署的应用程序的Web.config文件中的某些设置与开发Web.config文件中的设置不同。例如,您可能希望禁用调试选项并更改连接字符串,以便它们指向不同的数据库。
下面的源代码说明了如何配置在部署期间自动应用的web.config转换文件,以便对web.config进行更改。
来源:How to: Transform Web.config When Deploying a Web Application Project
注意:此技术可以应用于任意数量的部署(登台、测试、生产、Foo、Bar等)。
通常,在项目中,您会有一个web.config文件。与此相关联的可能是web.production.config、web.staging.config等。每个web.*.config文件都是一个转换,其中包含一些用于修改web.config中各种值的语言,例如连接字符串。这些转换文件中的每一个都与一个部署选项相关联,您通常会在部署期间选择该选项( Visual Studio顶部的小下拉列表通常设置为“Debug”)。
https://stackoverflow.com/questions/11036035
复制相似问题