什么是Web.Debug.config和Web.Release.Config文件?


110

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

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

谢谢!

Answers:


97

它的Visual Studio 2010中新的Web.config转换特征更多的信息在这里


编辑:

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

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

如果我分别在debug和release web.configs中有本地和远程地址,那么在根web.config文件中放置连接字符串是否有意义?

只有在环境之间不改变时才有意义。听起来像是您这样做,否则就没有必要将其保留在Web.config中。


12
甚至在4年后,此功能都已完成一半!它仅在部署到Azure /发布程序包时有效。这是一个有趣的话题
Nick

12

这些是Web.config转换文件。从使用Visual Studio的ASP.NET Web部署:Web.config文件转换

有两种方法可以自动执行更改Web.config文件设置的过程:Web.config转换和Web Deploy参数。Web.config转换文件包含XML标记,该标记指定了在部署Web.config文件时如何更改它。 您可以为特定的构建配置和特定的发布配置文件指定不同的更改。默认的构建配置为“调试”和“发布”,您可以创建自定义构建配置。发布配置文件通常对应于目标环境。


1

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

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

ASP.NET MVC 4动态连接字符串


-3

这是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)文件中的配置元素使用,因此无法解析它。


5
公平地说,如果您test在调试和发行配置文件中都有一个命名为连接字符串的名称,则它实际上应该只在主web.config中,并带有适当的部分作为模板。照原样,您正在复制代码,这是模板应为您解决的问题。
R0MANARMY 2012年

3
-1:这篇非常古老的文章完全误解了如何使用Web配置转换。1实际上不是答案(只是不正确的投诉),而2不是此处暗示的元素的简单合并。您必须具有显式的xslt替换命令。在获得5次投票方面做得很好,这些事情加剧了对这些转换文件的困惑 :)
Gone Coding
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.