2012-12-13 78 views
2

我有两个MVC 3 Web项目一个移动应用程序,另一个是普通桌面Web应用程序,最后加入了移动应用程序,我有一个生成定义,每次我检入代码时都会部署(门控签入)。tfsbuild - TFS生成定义 - 默认的Web应用程序部署

我的问题是,既然我已经加入移动构建定义采用该项目作为默认,所以我想知道如果我能在这种情况下,我想部署指定“默认Web项目”桌面版本,而不是手机。

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

/P:配置=开发/ P:平台= “任何CPU”/ P:DeployOnBuild =真/ p:DeployTarget = MSDeployPublish/p:MSDeployPublishMethod = WMSVC /p:MsDeployServiceUrl=https://IP:Port/msdeploy.axd/p:用户名= XXX/p:密码= XXX/p:AllowUntrustedCertificate =真/ p: DeployIisAppPath =路径

,并在“项目,以建立”选项,我有项目的解决方案(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> 

正如你可以看到我已经添加了一个条件,如果DeployDefaultWebsiteOnBuild设置为true,将其设置为true的DeployOnBuild。现在可以从命令行设置该属性。

/p:DeployDefaultWebsiteOnBuild=true 
+0

我已经添加了的ItemGroup在.csprj文件刚刚过去的PropertyGroup标签之下,但我得到这个例外......所需要的属性包括从元素空或丢失,你认为如果可能的话以另一种方式做它?...让我们说....设置为 False为移动设备,这是我不想部署的站点 –

+0

?veed此配置,但它doesn “T似乎工作.... <的PropertyGroup条件= “ '$(配置)| $(平台)' == '调试| AnyCPU'”> 真正 BIN \ DEBUG; TRACE 提示 4 和用于构建。定义的其余部分太。 @ jessehouwing –

+0

对不起,需要成为propertygroup,而不是itemgroup,在后期更正。不,您不能将移动项目设置为false,命令行始终优先于项目文件。你可以做其他事情,我会在上面更新我的答案。 – jessehouwing