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”的 CSWeb.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 文件有啥用?的主要内容,如果未能解决你的问题,请参考以下文章