2012-04-18 215 views
1

我今天剛剛下載了TeamCity 7,並決定啓動並運行Azure解決方案。我不想做任何特別的事(還),並開始與一個非常基本的命令行編譯:TeamCity將什麼參數傳遞給MSBuild?

msbuild /t:Publish /p:Configuration=Release;TargetProfile=Production;PublishDir=S:\HoursTracker\Deployments 

這成功地構建並生成一個包,看起來像這樣*:

enter image description here

然後我試圖以相同的方式配置的TeamCity:

enter image description here

本b uilds成功併產生一個包,看起來像這樣*:

enter image description here

我不明白的是爲什麼沒有在MVC項目的規模如此巨大的差異。直接從Visual Studio發佈產生與我的MSBuild命令完全相同的結果,所以我確信TeamCity是一個奇怪的人。既然我認爲TeamCity沒有損壞,有人可以請教我如何正確配置它,以便獲得預期的輸出?

*我已經用.zip重命名了包文件,以便可以查看這篇文章的詳細信息。

+0

學習Process Monitor,你可以很容易地看到傳遞給MSBuild的參數是什麼,http://technet.microsoft.com/en-us/sysinternals/bb896645 – 2012-04-18 08:21:41

+0

@LexLi謝謝你的提示,我會給出一個射擊。 – 2012-04-19 03:11:02

回答

1

明的回答幫我解開這個謎。在檢查了zip文件的內容之後,我發現不同的是,我的MSBuild包包含bin和obj文件夾,而TeamCity包沒有。

enter image description here

使這一發現之後,我意識到,我可以給的MSBuild指定多個目標,並前置「清潔」我的目標切換,如下所示:

msbuild /t:Clean;Publish /p:Configuration=Release;TargetProfile=Production;PublishDir=S:\HoursTracker\Deployments 

正如預期的那樣,這個刪除這些文件夾。顯然,TeamCity爲您隱式指定了「Clean」。謎團已揭開。

0

爲什麼你爲msbuild runner指定了x64?嘗試選擇工具版本。您尚未指定/ p:平臺參數。發佈任務是否涉及重建?

的TeamCity開始用的MSBuild/P數:從「屬性和環境變量」一節,再加上一些知名的參數,如配置名稱或項目名稱取參數。

+0

我試過x64和x86。兩者都有相同的結果。我也沒有指定工具版本,因爲我的理解是,該設置的目標是針對與MSBuild版本不同的.NET版本。在任何情況下,我也嘗試爲該設置指定4.0,並沒有任何明顯的效果。 – 2012-04-19 03:09:36

1

Windows Azure包可能比我們預期的要大。您可以將cssx文件重命名爲zip,然後您會發現包內的內容。除了Web應用程序的常用文件之外,還有一堆Windows Azure文件。例如,如果啓用診斷,您將看到一個診斷文件夾,您將在其中找到Windows Azure診斷運行時使用的文件。

最好的問候,

Ming Xu。

+0

謝謝,明。我沒有意識到這些也是拉鍊。我會盡力檢查他們,看看發生了什麼。我會跟進更多信息,如果我找出一些東西。 – 2012-04-19 03:10:31

+0

感謝您指點我在正確的方向。 +1 – 2012-04-19 03:50:30