【问题标题】:Best way to switch configuration between Development/UAT/Prod environments in ASP.NET?在 ASP.NET 中的 Development/UAT/Prod 环境之间切换配置的最佳方式?
【发布时间】:2010-09-13 01:42:01
【问题描述】:

在开发我的网络应用程序时,我需要在 3 个不同的环境之间切换 - 开发、UAT 和生产。我的所有 3 个配置文件中都有不同的数据库连接。我已经看到通过更改所有引用然后重新构建解决方案来手动完成这些设置的切换,并且还使用预处理器指令完成。有没有一种简单的方法可以根据一些变量来执行此操作,以便每次部署到新环境时都不必修改配置?

【问题讨论】:

    标签: asp.net configuration


    【解决方案1】:

    在我看来,您似乎可以从Visual Studio 2005 Web Deployment Projects 中受益。

    这样,您可以告诉它根据构建配置更新/修改 web.config 文件的部分。

    查看this blog entry from Scott Gu 以获得快速概览/示例。

    【讨论】:

    • 这个提供了最少的摩擦和交货时间,我能够很快地启动并运行它。感谢您的帮助!
    【解决方案2】:

    我非常喜欢使用 MSBuild,尤其是 MSBuild 社区任务 (http://msbuildtasks.tigris.org/),并且有一个 XSLT 任务可以使用适当的连接字符串设置等转换 web.config。

    我把这些任务放在手边:

    <Target Name="Configs">
    <Xslt RootTag="" Inputs="web.config" Output="Web.$(COMPUTERNAME).config" Xsl="web.config.$(COMPUTERNAME).xslt" Condition="Exists('web.config.$(COMPUTERNAME).xslt')" />
    

    显然,这不是 100% 你所追求的,这样每个开发人员都可以拥有自己的 web.config。

    但您没有理由不能使用上述原则来拥有应用正确 XSLT 的多个构建配置。

    我的 XSLT 如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    

    <!-- Dev -->
    <xsl:template match="/configuration/connectionStrings/add[@name='MyConnectionString']/@connectionString">
        <xsl:attribute name="connectionString">Data Source=MyServer;Initial Catalog=MyBD;User ID=user;password=pwd</xsl:attribute>
    </xsl:template>
    <xsl:template match="node()">
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <xsl:apply-templates/>
        </xsl:copy>
    </xsl:template>
    

    【讨论】:

    • 我一直在研究 MSBuild 和/或 NAnt 作为我接下来要学习的东西,但还没有开始。我知道我需要!!
    • 我的答案链接到一系列博客文章,这些文章教人们如何使用 NAnt 自动化构建。您可能会发现它是一个有用的起点。
    • 我对 NAnt 没有任何经验,它在 MSBuild 之上提供了什么?
    • 差别很小。 Nant 的任务更多,也稍微成熟一些,但是 MsBuild 是随 Visual Studio 一起提供的,实际上是由 Visual Studio 底层使用的,所以它的入门成本可能更低。
    • 嗯可能需要看看它。我对 MSBuild 相当熟悉(我自己编写了一些任务,您可以从我的博客中获得)。
    【解决方案3】:

    您始终可以在构建过程中使用 NAnt + NAnt.Contrib 来修改 web.config。 NAnt 有 xmlpeek 和 xmlpoke 任务,可以让你更新 xml 文件。

    例如

    【讨论】:

      【解决方案4】:

      【讨论】:

      • 我在该页面上收到 404。能不能总结一下?
      • 奇怪 - 也许 Scott 正在做推荐人检查?
      • 或者您发布了一个以问号结尾的 URL?尝试删除尾随的问号,链接将正常工作。
      【解决方案5】:

      我采用了更改配置的Jean Paul Boodhoo Method。 总体思路是拥有一个或多个 TOKENIZED 配置模板文件,而不是配置文件本身。然后,您有一个构建脚本任务,该任务将标记替换为单个本地属性文件中的值。此属性文件包含配置中的所有差异,并且每个工作副本都是唯一的。

      这个系统对我来说非常好用,一旦开始设置,就可以轻松管理环境变化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 2022-07-04
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多