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

我刚刚升级到Visual Studio 2010和MVC 2.0,我注意到Web.config有两个附加的文件附加到它? 这些文件是用来指定debugging和发布特定的设置,所以你不要凌乱主Web.config?

如果我在debugging和释放Web.configs中分别具有本地和远程的连接string,那么将连接string放在根Web.config文件中是否有意义?

谢谢!

这是Visual Studio 2010新的Web.config转换function。


编辑:

这些文件是用来指定debugging和发布特定的设置,所以你不要混乱了主web.config?

它不限于三个文件,你可以(在理论上)有你所拥有的文件一样多的文件。 “顶级”Web.config提供了您的Webconfiguration模板。 它下面的文件提供特定于该环境的replace值(例如,如果你有不同的连接string本地/阶段/testing/无论)。

如果我在debugging和释放web.configs中分别有一个本地和远程的连接string,那么将连接string放在根web.config文件中是否有意义?

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

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

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

如果有人感兴趣,这里是我写了一个dynamic连接string每个环境。 我想将代码部署到任何环境(Dev,Test,Pre-Prod,Prod …),而不必担心更改连接string。 我真的不能find一个好的方法来做到这一点与Asp.Net MVC 4,所以我想出了我自己的方式依赖每个环境的属性文件。

可能有更好的解决scheme,我来自Wicket / Java背景,最近开始使用MVC 4进行开发,所以可能存在更好的解决scheme。 但是这是一个链接到我的问题和答案dynamic连接string:

Asp.net MVC 4dynamic连接string

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

Web.Config中

  • 没有connectionStrings部分
  • 完全会员用户/angular色/等等。 提供者configuration使用connectionStringName =“test”

Web.Release.Config

  • 没有成员资格configuration(已经在主web.config中指定)
  • 连接string部分包括CS命名为“testing”

Web.Debug.Config

  • 没有成员资格configuration(已经在主web.config中指定)
  • 连接string部分包括CS命名为“testing”

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

在应用程序configuration中未find连接名称“test”,或连接string为空。

换句话说,因为连接string元素位于发布/debuggingdevise器文件中,并且由主(Web.config)文件中的configuration元素使用 ,所以无法parsing它。