Web.Debug.config 和 Web.Release.Config 文件有啥用?

Posted

技术标签:

【中文标题】Web.Debug.config 和 Web.Release.Config 文件有啥用?【英文标题】:What are the Web.Debug.config and Web.Release.Config files for?Web.Debug.config 和 Web.Release.Config 文件有什么用? 【发布时间】:2011-02-16 23:41:51 【问题描述】:

我刚刚升级到 Visual Studio 2010 和 MVC 2.0,我注意到 Web.config 附加了两个附加文件?这些文件是否用于指定调试和发布特定设置,因此您不会弄乱主 Web.config?

如果我在调试和发布 Web.configs 中分别有一个本地和远程连接字符串,那么在根 Web.config 文件中放置一个连接字符串是否有意义?

谢谢!

【问题讨论】:

【参考方案1】:

这是 Visual Studio 2010 的新 Web.config 转换功能。More information here。


编辑:

这些文件是否用于指定调试和发布特定设置,这样您就不会弄乱主 web.config?

它不限于三个文件,您可以(理论上)拥有与环境一样多的文件。 “***”Web.config 提供了您的 Web 配置模板。它下面的文件提供特定于该环境的替换值(例如,如果您有不同的本地/阶段/测试/任何连接字符串)。

如果我在调试和发布 web.configs 中分别有一个本地和远程连接字符串,那么在根 web.config 文件中放置一个连接字符串是否有意义。

只有在环境之间不发生变化时才有意义。听起来你的情况是这样做的,在你的情况下,不,将它留在 Web.config 中是没有意义的。

【讨论】:

这个功能是半生不熟,即使是 4 年后!它仅在部署到 azure / 发布包时才有效。这是一个有趣的线程:forums.asp.net/t/1532038.aspx【参考方案2】:

这些是 Web.config 转换文件。来自ASP.NET Web Deployment using Visual Studio: Web.config File Transformations:

有两种方法可以自动更改 Web.config 文件设置:Web.config 转换和 Web 部署参数。 Web.config 转换文件包含 XML 标记,用于指定在部署 Web.config 文件时如何更改它。 您可以指定 针对特定构建配置和特定的不同更改 发布配置文件。默认构建配置是 Debug 和 发布,您可以创建自定义构建配置。发布 profile 通常对应于目标环境。

【讨论】:

【参考方案3】:

如果有人感兴趣,这里是我写的东西,每个环境都有一个动态连接字符串。我想将代码部署到任何环境(Dev、Test、Pre-Prod、Prod...),而不必担心更改连接字符串。我真的找不到使用 Asp.Net MVC 4 的好方法,所以我想出了自己的方法来依赖每个环境的属性文件。

可能有更好的解决方案,我来自 Wicket/Java 背景,最近开始使用 MVC 4 进行开发,因此,可能存在更好的解决方案。但这里是我的动态连接字符串问题和答案的链接:

Asp.net MVC 4 dynamic connection string

【讨论】:

【参考方案4】:

这是 VS 长期需要的东西。不幸的是,实施似乎存在问题。例如考虑这种情况(VS.2010 Ultimate,所有 SP):

Web.Config

没有 connectionStrings 部分 完全会员用户/角色/等。使用 connectionStringName="test" 的提供程序配置

Web.Release.Config

无成员配置(已在主 web.config 中指定) connectionStrings 部分,包括名为“test”的 CS

Web.Debug.Config

无成员配置(已在主 web.config 中指定) connectionStrings 部分,包括名为“test”的 CS

执行应用程序时出现以下错误:

在应用程序配置中未找到连接名称“test”或连接字符串为空。

换句话说,因为连接字符串元素在Release/Debug设计器文件中并且被主(Web.config)文件中的配置元素使用,所以无法解析它。

【讨论】:

公平地说,如果您在调试和发布配置文件中都有一个名为test 的连接字符串,它实际上应该只是在主 web.config 中,并带有相应的模板部分。照原样,您正在复制代码,这是模板应该为您解决的问题。 -1:这篇非常老的帖子完全误解了如何使用 Web 配置转换。 1 这实际上不是一个答案(只是一个错误的抱怨),并且 2 这不是这里暗示的元素的简单合并。您必须有明确的 xslt 替换命令。 干得好,获得 5 个赞成票,因为这会增加对这些转换文件的混淆 :)

以上是关于Web.Debug.config 和 Web.Release.Config 文件有啥用?的主要内容,如果未能解决你的问题,请参考以下文章

vs2015 工程中 Web.Release.config和Web.Debug.config文件无效的处理办法

ASP.NET和ASP.NETCore多环境配置对比

如何转换任何配置文件 文件中的内容

webconfig

C#项目 App.config 配置文件不同使用环境配置

部署应用程序时,Octopus Deploy 未合并我的转换文件