我刚刚升级到Visual Studio 2010和MVC 2.0,我注意到Web.config附加了两个附加文件?这些文件是否用于指定调试和发布特定设置,因此您不会使主Web.config混乱?
如果在调试和发布Web.configs中分别有本地和远程连接字符串,那么在根Web.config文件中放置连接字符串是否有意义?
谢谢!
答案 0 :(得分:93)
这是Visual Studio 2010的新Web.config转换功能。More information here。
编辑:
这些文件是否用于指定调试和发布特定设置,因此不会使主web.config混乱?
它不仅限于三个文件,您(理论上)可以拥有与环境一样多的文件。 “顶级”Web.config提供了Web配置的模板。它下面的文件提供特定于该环境的替换值(例如,如果你有本地/ stage / test /的不同连接字符串)。
如果我在调试和发布web.configs中分别有本地和远程连接字符串,那么在根web.config文件中放置连接字符串是否有意义。
只有不在环境之间改变才有意义。听起来像你的情况一样,在你的情况下没有,将它留在Web.config中是没有意义的。
答案 1 :(得分:10)
这些是Web.config转换文件。来自ASP.NET Web Deployment using Visual Studio: Web.config File Transformations:
有两种方法可以自动更改Web.config文件设置的过程:Web.config转换和Web Deploy参数。 Web.config转换文件包含XML标记,该标记指定在部署Web.config文件时如何更改。 你可以指定 特定构建配置和特定构建配置的不同更改 发布个人资料默认的构建配置是Debug和 发布,您可以创建自定义构建配置。发布 配置文件通常对应于目标环境。
答案 2 :(得分:1)
如果有人感兴趣,我写的是每个环境都有一个动态连接字符串。我想将代码部署到任何环境(Dev,Test,Pre-Prod,Prod ...),而不必担心更改连接字符串。我无法用Asp.Net MVC 4找到一个好方法,所以我想出了一种依靠每个环境的属性文件的方法。
可能有更好的解决方案,我来自Wicket / Java背景,最近开始使用MVC 4进行开发,因此可能存在更好的解决方案。但是这里有一个关于动态连接字符串的问题和答案的链接:
答案 3 :(得分:-3)
这是VS中长期需要的东西。不幸的是,实施似乎存在问题。例如,考虑这种情况(VS.2010 Ultimate,所有SP):
的Web.Config
Web.Release.Config
Web.Debug.Config
执行应用程序时出现以下错误:
在应用程序配置中找不到连接名称'test',或者连接字符串为空。
换句话说,因为连接字符串元素位于发布/调试设计器文件中,而主要(Web.config)文件中的配置元素使用 ,所以它无法解析它。 / p>