【问题标题】:Specifying project name in msdeploy在 msdeploy 中指定项目名称
【发布时间】:2011-02-21 21:30:30
【问题描述】:

我在一个解决方案中有两个 Web 项目,我想同时使用 msbuild 和 WebDeploy 来部署它们(这通过 CI 服务器进行)。

目前,我正在运行命令行:

C:\ProjectFolder>msbuild <solution>.sln
    /p:Configuration=<Release>
    /p:OutputPath=bin
    /p:DeployOnBuild=True
    /p:DeployTarget=MSDeployPublish
    /p:MsDeployServiceUrl=https://<ServerUrl:port>/msdeploy.axd
    /p:username=<user>
    /p:password=<password>
    /p:AllowUntrustedCertificate=True
    /p:DeployIisAppPath=<SiteName>
    /p:MSDeployPublishMethod=WMSVC

这会按预期部署一个项目。但是我怎样才能部署另一个呢?在这个命令行中我没有指定项目名称 - 为什么它选择一个项目来部署另一个项目?

理想情况下,我可以使用相同的命令部署两个项目,例如

...

    /p:Project=Project1
    /p:DeployIisAppPath=<SiteName>/Project1
    /p:Project=Project2
    /p:DeployIisAppPath=<SiteName>/Project2

但我怀疑这是可能的。或者,我只想知道如何在命令行中指定项目名称。

【问题讨论】:

    标签: msbuild command-line-arguments msdeploy


    【解决方案1】:

    我认为最好将单个调用分成三个:
    - 构建 sln;
    - 部署站点 1;
    - 部署站点2;

    msbuild.exe <solution>.sln
        /p:Configuration=<Release>
        /p:OutputPath=bin
    
    msbuild.exe project1dir\proj1.csproj
        /p:Configuration=<Release>
        /p:OutputPath=<Path to common bin>
        /p:DeployOnBuild=True
        /p:DeployTarget=MSDeployPublish
        /p:MsDeployServiceUrl=https://<ServerUrl:port>/msdeploy.axd
        /p:username=<user>
        /p:password=<password>
        /p:AllowUntrustedCertificate=True
        /p:DeployIisAppPath=<SiteName>/Project1
        /p:MSDeployPublishMethod=WMSVC
    
    msbuild.exe project1dir\proj2.csproj
        /p:Configuration=<Release>
        /p:OutputPath=<Path to common bin>
        /p:DeployOnBuild=True
        /p:DeployTarget=MSDeployPublish
        /p:MsDeployServiceUrl=https://<ServerUrl:port>/msdeploy.axd
        /p:username=<user>
        /p:password=<password>
        /p:AllowUntrustedCertificate=True
        /p:DeployIisAppPath=<SiteName>/Project2
        /p:MSDeployPublishMethod=WMSVC
    

    【讨论】:

    • 对。我缺少的部分实际上是使用项目名称而不是解决方案调用 msbuild - 感谢您的帮助!
    【解决方案2】:

    如果您从项目的根文件夹运行命令行,并且没有指定要构建的文件,msbuild 应该会自动选择该文件夹中的项目。

    这将需要两个单独的命令行调用。

    然后您可以在此基础上构建一个批处理文件,依次将 cd 写入每个文件夹并单独运行 msbuild,或者同样为触发每个构建的 msbuild 构建您自己的 proj 文件。

    抱歉,我目前无法在手机上制作示例!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 2019-05-14
      相关资源
      最近更新 更多