2012-12-13 42 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