【问题标题】:How do I deploy many MSDeploy publish profiles in a single MSBuild command?如何在单个 MSBuild 命令中部署多个 MSDeploy 发布配置文件?
【发布时间】:2024-01-17 08:51:01
【问题描述】:

我有一个项目,我需要使用几种不同的配置进行部署(具体来说,将同一个包部署到 2 个不同的 IIS 应用程序)。我设置了 2 个发布配置文件,每个配置文件在单独调用时都会创建一个包。我想用一个命令创建两个包。

我尝试过这样的命令,但它们往往会简单地忽略第二个配置文件:

msbuild MyWebProject.csproj /p:DeployOnBuild=True "/p:PublishProfile=FirstProfile;PublishProfile=SecondProfile"

有没有一种方法可以使用单个命令来部署两个配置文件?

【问题讨论】:

标签: msbuild msdeploy webdeploy


【解决方案1】:

我知道这并不是您所要求的,但是您是否考虑过构建一次并部署两次?

要通过 msbuild 实现这一点,您可以创建一个调用 msdeploy 的 msbuild 项目。

构建(创建包)

msbuild MyWebProject.csproj
    /p:DeployTarget=Package
    /p:PackageLocation=MyWebProject.zip
    /p:CreatePackageOnPublish=True

两次部署包

msdeploy.exe 
    -verb:sync 
    -source:Package=MyWebProject.Zip 
    -destination:auto:ComputerName="my.server1.com"
    -declareParamFile:Params1.xml

msdeploy.exe 
    -verb:sync 
    -source:Package=MyWebProject.Zip 
    -destination:auto:ComputerName="my.server2.com"
    -declareParamFile:Params2.xml

【讨论】:

  • 这实际上是我最终要做的,因为我真正想要改变的是已部署应用程序的 IIS 名称。对于一次安装,我使用了发布配置文件中指定的 IIS 应用程序名称,而对于另一次安装,我按照您的建议在命令行中覆盖了该值。