What are the Web.Debug.config and Web.Release.Config files for?

I just upgraded to Visual Studio 2010 and MVC 2.0 and I noticed the Web.config has two additional files attached to it? Are these files used to specify debug and release specific settings, so you don't clutter up the main Web.config?

Does it even make sense to place a connection string in the root Web.config file if I have a local and remote one in the debug and release Web.configs respectively?

Thanks!

84374 次浏览

这是 Visual Studio 2010. 更多信息请点击这里的新 Web.config 转换特性。


编辑:

这些文件是否用于指定调试和发布特定设置,以避免主 web.config 混乱?

它不限于三个文件,您可以(理论上)拥有与环境一样多的文件。“ top level”Web.config 提供了 Web 配置的模板。它下面的文件提供了特定于该环境的替换值(比如,如果对于本地/stage/test/whatever 有不同的连接字符串)。

Does it even make sense to place a connection string in the root web.config file if I have have a local and remote one in the debug and release web.configs respectively.

只有在不随环境变化的情况下才有意义。在您的情况下,似乎是这样的,在您的情况下,不,将它保留在 Web.config 中是没有意义的。

这是 VS 中长期需要的东西。不幸的是,实现中似乎存在一个问题。例如,考虑下面的场景(VS. 2010 Ultimate,all SP) :

Web.Config

  • 没有连接字符串部分
  • 使用 ConnectionStringName = “ test”的完全成员身份用户/角色/等提供程序配置

网络。释放。配置

  • 没有成员资格配置(已经在主 web.config 中指定)
  • ConnectionStrings 部分,包括名为“ test”的 CS

Web.Debug. Config

  • 没有成员资格配置(已经在主 web.config 中指定)
  • ConnectionStrings 部分,包括名为“ test”的 CS

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

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

换句话说,由于连接字符串元素位于 Release/Debug 设计器文件中,而 用过位于 main (Web.config)文件中的配置元素中,因此无法解析它。

这些是 Web.config 转换文件:

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

如果有人感兴趣的话,下面是我写的一些东西,每个环境都有一个动态连接字符串。我希望将代码部署到任何环境(Dev、 Test、 Pre-Prod、 Prod...) ,而不必担心更改连接字符串。我实在找不到一个好方法来对付阿斯珀。Net MVC 4,所以我想出了自己的方法来依赖于每个环境的属性文件。

There may be a better solution, I come from a Wicket/Java background and recently started developing with MVC 4 so, it's possible a better solution exists. But here is a link to my question and answer for a dynamic connection string:

Net MVC 4动态连接字符串