在msdeploy中指定项目名称

时间:2011-02-21 21:30:30

标签: msbuild command-line-arguments msdeploy

我在一个解决方案中有两个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

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

2 个答案:

答案 0 :(得分:15)

我认为将单个电话分成三个会更好:
  - 建立sln;
  - 部署site1;
  - 部署site2;

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

答案 1 :(得分:1)

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

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

然后你可以通过构建一个批处理文件来构建这个文件,该文件依次对每个文件夹进行cd并分别运行msbuild,或者同样为msbuild构建自己的proj文件,触发每个构建。

抱歉,我不能在手机上制作一个例子!