2012-05-31 58 views
2

我有一個單一的TFS溶液(外殼,COMON庫,兩個模塊和多個測試projets棱鏡應用程序。對於simplcity我選擇了一個DirectoryModuleCatalog,爲了以後本地運行的應用程序構建添加了一個後構建步驟來模塊項目建設複製構建dll到GUI應用程序輸出路徑的模塊子文件夾TFS2010解決方案PostBuild宏值在團隊不同建設

這適用於本地客戶端版本,但是當相同的postbuild事件觸發在檢查這是因爲本地相對路徑的$(OutDir)宏是在TFS構建代理MSBuild日誌中的絕對路徑!

引用MSDN

$(OutDir) 

Path to the output file directory, relative to the project directory. 
This resolves to the value for the Output Directory property. 
It includes the trailing backslash '\'. 

本地解析爲 「斌\調試\」 上生成代理其解析爲 「C:\構建\ 5 \ XXXX \ Gui.DEV_XXXX7_Iteration0.CI \二進制\」

鑑於這種本地原生構建定義;

mkdir "$(SolutionDir)Gui\$(OutDir)Modules\" 
copy "$(TargetPath)" "$(SolutionDir)Gui\$(OutDir)Modules\" 

你可以看到爲什麼失敗的生成代理這樣的:

mkdir "C:\Builds\4\XXXX\Gui.DEV_Cortex7_Iteration0.CI\Sources\Gui\C:\Builds\4 \XXXX\Gui.DEV_XXXX7_Iteration0.CI\Binaries\Modules\" 
copy "C:\Builds\4\XXXX\Gui.DEV_XXXX7_Iteration0.CI\Binaries\Apdcomms.Cortex.Gui.Example2.Module.dll" 
    "C:\Builds\4\XXXX\Gui.DEV_XXXX7_Iteration0.CI\Sources\Gui\C:\Builds\4\XXXX\Gui.DEV_XXXX7_Iteration0.CI\Binaries\Modules\" 
The filename, directory name, or volume label syntax is incorrect. 
The filename, directory name, or volume label syntax is incorrect. 
     0 file(s) copied. 

所以looing在宏的值這似乎在構建時,我需要一個不同的命令集在postbuild TFS以本地模式構建代理,這非常糟糕。

SO到問題:如何將解決方案中的一個項目的二進制輸出移動到同一解決方案中的另一個項目的子文件夾中,方式是在locla客戶端構建和TFS團隊構建

+0

所以你有2個項目(+更多的測試項目)。我假設一個項目有另一個參考。這個參考是如何製作的?您是使用項目引用還是指定文件路徑?另外,你使用的是什麼版本的TFS? – TimWagaman

+0

1個文件,1個WPF shell項目,2個PRIMS模塊項目,這些項目沒有彼此的引用,但是必須將moule assbmlies dll複製到tee shell proejcts exe文件夾下的子文件夾中,以便在運行時「發現」 ;多數民衆贊成後構建命令試圖做。 –

+0

TFS是2010 SP1 –

回答

2

我個人不喜歡在從TFS構建時依賴後創建腳本。定製你的構建模板會好得多。雖然後生成腳本確實更容易,但構建模板將更好地管理您的環境(在我看來)。我鏈接到一篇Microsoft文章,爲您提供更多有關如何完成此任務的信息。我也在粘貼內容,以便StackOverflow可以保持獨立。

http://msdn.microsoft.com/en-us/library/ff977206.aspx

默認生成過程(如DefaultTemplate.xaml定義),丟棄它從你的所有代碼項目編譯成一個單一的目錄中的二進制文件。但是,在某些情況下,您希望將二進制文件組織成更細化和有組織的文件夾結構。

您可以使用此技術主題中創建滴您的二進制文件到您設計的目錄結構的自定義生成過程。您也可以使用相同的原則以不同的方式自定義構建過程。本主題介紹了以下技術:

定製生成過程的Windows工作流段。除了編譯和處理二進制文件之外,您應該對此段進行更改以定製構建過程的大部分方面。具體地說,本主題介紹瞭如何執行以下任務:

通過修改默認模板(DefaultTemplate.xaml)的副本創建一個自定義生成過程。

聲明並使用參數將數據傳遞到工作流中。

聲明並使用變量在整個工作流程中收集和傳遞數據。

修改工作流如何使用MSBuild活動調用MSBuild。

將文件下載到構建服務器並使用ConvertWorkspaceItem活動使該文件可用於構建過程。

自定義構建過程的MSBuild段。通過修改這個細分市場,你可以更有效地定製如何編譯和處理二進制文件。具體來說,本主題描述如何執行以下任務:

將參數傳遞給MSBuild,然後在您的代碼項目中使用它們來更改編譯的二進制文件的處理方式。

設置您自己的MSBuild元素(如屬性組或目標)的集中式通用代碼庫。通過設置這種類型的庫,可以使團隊輕鬆地重用和修改構建過程邏輯的關鍵部分。

相關問題