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

Dav*_*ans 17 asp.net msbuild tfs msdeploy webdeploy

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

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

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

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

Sof*_*ter 9

您可以使用Web部署又名MSDeploy的参数化功能.您将需要使用parameters.xml文件和setParameters.xml文件来动态交换设置,因为您没有在构建时转换包.

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

这是一个为登台环境传入ParamFile的msdeploy命令行示例.

msdeploy -verb:sync -source:package="c:\packages\mypackage.zip" -dest:auto,computername=StagingServer1 -setParamFile="c:\StagingParameters.xml"
Run Code Online (Sandbox Code Playgroud)

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

Web部署参数化在行动中

参数化与Web.Config转换

Web部署操作设置

在stackoverflow上提供了几个方法的类似问题