tfsbuild - TFS 构建定义 - 要部署的默认 Web 应用程序

Posted

技术标签:

【中文标题】tfsbuild - TFS 构建定义 - 要部署的默认 Web 应用程序【英文标题】:tfsbuild - TFS build definition - default web application to deploy 【发布时间】:2012-12-13 23:11:46 【问题描述】:

我有两个 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 文件)

有什么想法吗?

【问题讨论】:

【参考方案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

【讨论】:

我在 .csprj 文件中添加了 itemGroup,就在最后一个 propertyGroup 标记的正下方,但我得到了这个异常...所需的属性 include 为空或元素 中缺少,你认为如果可能以其他方式做到这一点?...比方说 .... 为移动设备设置 False 这是我不想部署的站点 ?已经验证了这个配置,但它似乎不起作用....truefullfalsebin\DEBUG;TRACEprompt4False 以及其余的构建定义。 @jessehouwing 对不起,需要是属性组,而不是项目组,已在帖子中更正。不,您不能将移动项目设置为 false,命令行始终优先于项目文件。你可以做点别的,我会在上面更新我的答案。 实际上我已经应用了您上面描述的方法,并且工作起来就像一个魅力我刚刚使用逆布尔条件 =“$(DeployDefaultWebsiteOnBuild)' == 'false' 然后部署.. . 非常感谢!

以上是关于tfsbuild - TFS 构建定义 - 要部署的默认 Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

通过tfs在SQL Server上部署SSRS

TFS Build 2013 避免代码分析

在 TFS 构建中找不到 NuGet 包版本?

TFS Build 2015、Gihub Enterprise 和拉取请求

如何配置 tfs build 以在发布构建完成时复制 dll

TFSBuild - 数据库部署 - 存在文件锁定冲突