通过 MSDeploy.exe 进行 Web 部署

Web Deployment through MSDeploy.exe

我正在使用 Jenkins 配置 CI 构建服务器。在完成构建步骤后,我想部署网站。

从 VisualStudio 发布网站时,我通过 Web Deploy 发布。我喜欢这种方法,因为它实际上发布了那些已更改的文件,因此部署非常快。

现在在构建服务器上我正在尝试做同样的事情:构建应用程序(使用 MSBuild.exe),然后部署应用程序(使用 MSDeploy.exe?)。

我见过一些 post 他们使用 MSBuild.exe 部署应用程序,而其他人使用 MSDeploy.exe,这两者之间有显着差异吗?

您有什么建议可以帮助解决这个问题吗?

感谢并进阶。

使用 MSBuild 创建 MSDeploy 程序包,然后 MSDeploy.exe 将该程序包部署到任何环境。 link 应该可以帮助您更好地理解 WebDeploy/MSDeploy 的工作原理。

http://dotnetcatch.com/2016/02/25/the-anatomy-of-a-webdeploy-package/

真正酷的是您还可以使用 MSDeploy 来部署数据库和非 Web 应用程序。我们已经使用这种方法完全自动化地部署了 50 多个产品。

http://dotnetcatch.com/2016/02/10/deploying-a-database-project-with-msdeploy/

http://dotnetcatch.com/2016/03/18/deploy-non-web-apps-with-msdeploy/

已更新 - 使用 MSDeploy 包的基本步骤:

  1. 通过将 /t:Package arg 添加到您的 MSBuild 调用
  2. 在您的构建中创建一个包
  3. 将生成的包从 bin 目录存储到您的工件存储库
  4. 调用 MSDeploy.exe 将包部署到您的目标服务器。这里有很多选择,但是 基本命令如下:

    "c:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package=mypackage.zip -dest:auto,computerName=localhost

使用当前 Visual Studio 和 dotnet 更容易,在 Visual Studio 中创建您的发布配置文件,然后在 CI 服务器上使用 dotnet:

dotnet publish /p:PublishProfile=PROFILE-NAME /p:Password=*****

https://github.com/aspnet/Docs/blob/master/aspnetcore/host-and-deploy/visual-studio-publish-profiles.md