18

我想知道如何执行以下操作

  • 构建并打包一个 ASP.NET 网站到文件系统
  • 能够将网站部署到一个或多个环境。我希望配置文件的转换发生在部署点,而不是在构建点。这样,我的代码不会为每个部署重新编译,并且不存在引入新更改的风险。

根据我自己的阅读,我不确定如何做到这一点。WebDeploy 似乎基于配置打包、转换和部署,但我不确定如何将这些步骤解耦以避免需要从源代码控制重新编译代码。

有没有人有解决这个问题的经验?

4

1 回答 1

10

您可以使用 web deploy aka MSDeploy 的参数化功能。您将需要使用 parameters.xml 文件和 setParameters.xml 文件来动态换出设置,因为您没有在构建时转换您的包。

在部署时,您可以传入任何 .xml 文件来设置您在 parameters.xml 文件中指定的参数。由于parameters.xml 位于您的项目解决方案的根目录(例如,请参阅文件放置位置的示例链接),因此在构建时它会被烘焙到您的Web 包中。但是,您现在可以通过在部署期间从命令行传入 setParms .xml 文件来灵活地更改这些值。这与在构建期间根据配置设置转换值不同。

这是一个 msdeploy 命令行示例,用于为暂存环境传入 ParamFile。

msdeploy -verb:sync -source:package="c:\packages\mypackage.zip" -dest:auto,computername=StagingServer1 -setParamFile="c:\StagingParameters.xml"

有关示例和 MSDN 技术信息,请参见以下链接:

Web 部署参数化实战

参数化与 Web.Config 转换

Web 部署操作设置

关于stackoverflow的类似问题提供了几种方法

于 2013-05-03T08:42:01.823 回答