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 为空或元素以上是关于tfsbuild - TFS 构建定义 - 要部署的默认 Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
TFS Build 2015、Gihub Enterprise 和拉取请求