【问题标题】: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 文件中放置一个连接字符串是否有意义?

谢谢!

【问题讨论】:

    标签: asp.net asp.net-mvc visual-studio-2010 asp.net-mvc-2 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”的 CS

        Web.Debug.Config

        • 无成员配置(已在主 web.config 中指定)
        • connectionStrings 部分,包括名为“test”的 CS

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

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

        换句话说,因为连接字符串元素在Release/Debug设计器文件中并且被主(Web.config)文件中的配置元素使用,所以无法解析它。

        【讨论】:

        • 公平地说,如果您在调试和发布配置文件中都有一个名为test 的连接字符串,它实际上应该只是在主 web.config 中,并带有相应的模板部分。照原样,您正在复制代码,这是模板应该为您解决的问题。
        • -1:这篇非常老的帖子完全误解了如何使用 Web 配置转换。 1 这实际上不是一个答案(只是一个错误的抱怨),并且 2 这不是这里暗示的元素的简单合并。您必须有明确的 xslt 替换命令。 干得好,获得 5 个赞成票,因为这会增加对这些转换文件的混淆 :)
        猜你喜欢
        • 2015-10-08
        • 2012-05-08
        • 1970-01-01
        • 2013-11-15
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 2014-05-31
        • 1970-01-01
        相关资源
        最近更新 更多