我在一个解决方案中有两个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
但我怀疑这是可能的。或者,我只想知道如何在命令行中指定项目名称。
答案 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文件,触发每个构建。
抱歉,我不能在手机上制作一个例子!