2

我以前的大多数 Web 应用程序都是使用金字塔 (python) 框架构建的。使用金字塔,可以在开发或生产模式下运行应用程序。这是通过提供 production.ini 或 development.ini 设置文件的位置作为应用程序的启动参数之一来实现的。

此文件包含与日志记录级别、错误报告和数据库连接相关的设置。这些文件在 .net 世界中的等效文件似乎是 web.config 文件。我假设我可以创建不同的执行环境,只需创建一个新的 web.config,将其重命名为适当的名称,然后重新启动应用程序。

我的问题是,我怎样才能让我的应用程序以正确的 *.config 文件为目标(假设将它们称为 production.config 和 development.config)?

4

2 回答 2

1

您可能想查看MSDeploy。我将它用于类似的情况,它帮助我建立了一个参数文件(要替换的内容,无论它是 XML、文件路径、文本文件等)和多个设置参数文件 [您可以阅读有关 declareParam 和在这里设置参数。

在不了解太多结构的情况下,您基本上会为此做一些事情。

msdeploy -verb:sync -source:contentPath=c:\pathtosite\root -dest:package=c:\package.zip -declareParamFile=c:\packageparameters.xml"

为每个环境创建一个关联的参数文件,例如

development.xml
staging.xml
production.xml 

这里是参数文件设置的一个很好的解释)

那么对于您的部署,您将拥有一些东西(取决于您要使用的提供者)

msdeploy -verb:sync -source:package=c:\package.zip -dest:contentPath=c:\inetpub\production -setParamFile=c:\<environment>.xml

提供者的数量非常广泛。内容路径只是一个简单的示例,但您可以直接从 IIS 拉取到 IIS 等。非常健壮。

于 2012-05-12T23:30:11.383 回答
0

据我所知,没有办法指定不同的 web.config 文件。但是,从 .NET 4.0 开始,您可以使用称为 web.config 转换的东西,它会在构建时修改您的基础 web.config。您可以拥有 Web.Debug.Config 和 Web.Release.Config,它们的应用取决于您使用的构建配置。请记住,这些不是普通的 web.config 文件,而是修改基本 web.config 的 转换文件。

有关更多信息和所涉及的基本思想的演练,请参阅MSDN 上的此处。给出的 web.config 转换文件的基本示例如下,它修改连接字符串以使用不同的连接字符串进行发布构建:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <connectionStrings>
        <add name="MyDB" connectionString="ReleaseSQLServer" 
            xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
</configuration>
于 2012-05-12T22:52:39.200 回答