2

我有两个 MVC 3 Web 项目,一个用于移动应用程序,另一个是常规桌面 Web 应用程序,最后添加的是移动应用程序,我有一个构建定义,每次签入代码时都会部署(门控签入)。

我的问题是,由于我添加了移动设备,因此构建定义将该项目作为默认项目,所以我想知道在这种情况下是否可以指定“默认 Web 项目”,我想改为部署桌面版本手机。

我想知道是否可以从构建参数中指定,配置如下:

/p:Configuration=Dev /p:Platform="Any CPU" /p:DeployOnBuild=true /p:DeployTarget=MSDeployPublish /p:MSDeployPublishMethod=WMSVC /p:MsDeployServiceUrl=https://IP:Port/msdeploy.axd / p:username=xxx /p:password=xxx /p:AllowUntrustedCertificate=True /p:DeployIisAppPath=Path

在“要构建的项目”选项中,我有项目的解决方案(sln 文件)

有任何想法吗?

4

1 回答 1

1

不要将其他属性添加到 MSBuild 命令行,而是编辑项目文件并在项目文件中设置属性。如果需要,创建一个特定的配置来放置它们,这样部署就不会总是发生在 Visual Studio 中。

 <PropertyGroup Condition="'$(BuildingInsideVisualStudio)' == false">
      <DeployOnBuild>true</DeployOnBuild>
      <MSDeployTarget>MSDeployPublish</MSDeployTarget>
      ....
      ....
 </PropertyGroup>

这样项目文件就会知道何时部署。如果需要,您可以将这些项目粘贴到已经存在的 Dev|AnyCPU PropertyGroup 中,但这样它总是会在 Visual Studio 中构建。

为了能够通过命令行触发部署,您必须确保每个项目都侦听自己的命令行参数。

 <PropertyGroup Condition="'$(BuildingInsideVisualStudio)' == false">
      <DeployOnBuild Condition="'$(DeployDefaultWebsiteOnBuild)' == 'true'>true</DeployOnBuild>
      <MSDeployTarget>MSDeployPublish</MSDeployTarget>
      ....
      ....
 </PropertyGroup>

如您所见,我已向 DeployOnBuild 添加了一个条件,如果 DeployDefaultWebsiteOnBuild 设置为 true,则该条件将其设置为 true。现在您可以从命令行设置该属性。

 /p:DeployDefaultWebsiteOnBuild=true
于 2012-12-14T00:00:42.807 回答