如何使用MS Web Deploy在日期时间戳记文件夹中部署到远程服务器

时间:2014-04-18 10:06:57

标签: deployment msbuild web-deployment

我工作场所的所有部署都是手动的。我一直在寻找使用MSBUILD和MS Web Deploy自动化所有这些的方法。我设法得到的工作如下:

  • 构建/编译解决方案
  • 运行数据库迁移
  • 使用ms web deploy直接部署到网站

全部来自一个MSBUILD脚本。

这与手动过程略有不同,因为手动部署新版本的网站时,会将其放入日期时间戳记的新文件夹中。然后IIS指向新文件夹。

我的问题是,我将如何做最后两个动作?即写入位于比当前网站指向的文件夹高一级的特定文件夹,然后重新指向新文件夹IIS。

1 个答案:

答案 0 :(得分:0)

Web Deploy不直接支持此功能。值得庆幸的是,它确实提供了runCommand提供程序,这是您最终将要使用的。

%windir%\ system32 \ inetsrv \ appcmd.exe是您用来交换站点目录的实用程序。可以在此处找到使用示例:How do I change the physical path of web site in IIS7 with APPCMD?

  1. 创建一个调用appcmd的脚本。此脚本将始终位于目标服务器上。您可以决定将其作为站点部署的一部分包含在内,也可以将其从旧目录中移动到新目录中。 " web部署用户"目标计算机上需要具有相应的凭据和访问权限才能创建目录。

  2. 在MSBUILD脚本中,在部署之前,请调用目标服务器上的脚本。 E.g。

    msdeploy.exe -verb:sync -source:runco​​mmand =" C:\ path \ to \ wwwroot \ bin \ script.bat" -dest:auto,wmsvc = https://contoso.com:8172/msdeploy.axd,username=%username%,password=%password%

  3. 然后照常部署

  4. 注意: 尽量避免这种完全部署的方式。如果您希望对站点进行快照,请考虑部署到程序包(zip),然后将该程序包部署到目标服务器。回滚应该通过部署旧软件包来处理,而不是通过重新映射到旧目录来处理。