web.config转换在部署时不构建

时间:2013-05-03 07:11:43

标签: asp.net tfs msbuild msdeploy webdeploy

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

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

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

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

1 个答案:

答案 0 :(得分:9)

您可以使用Web部署a.k.a 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 Deploy Parameterization in Action

Parameterization vs. Web.Config Transformation

Web Deploy Operation Settings

Similar question on stackoverflow that provides several methods