簡體   English   中英

如何以一種可與TFS 2010,TFS 2012和TFS 2013一起使用的方式編譯構建活動?

[英]How to compile a Build Activity in such a way that it will work with TFS 2010, TFS 2012 and TFS 2013?

定制構建活動取決於以下TFS程序集:

Microsoft.TeamFoundation.Build.Client.dll
Microsoft.TeamFoundation.Build.Workflow.dll
Microsoft.TeamFoundation.VersionControl.Client.dll

目的是對它進行編譯,使其可以在TFS 2010,TFS 2012和TFS 2013上運行,而不必為可能調用該活動的所有可能的Build Agent計算機手動指定綁定重定向。

提供一個與活動一起的配置文件並創建一個使用該配置文件中指定的綁定重定向的應用程序域似乎是一個選擇,但這最終將不起作用,因為“ Microsoft.TeamFoundation.Build.Client.BuildActivity”屬性在執行自定義活動的程序集中的代碼之前,活動代碼必須用*修飾,然后調用代碼將讀取該活動-並且該屬性來自的TFS程序集的版本與內存中加載的TFS程序集的版本不匹配,該活動就像完全沒有使用該屬性來裝飾一樣好。

(*我已經確認,如果自定義活動未使用BuildActivity屬性裝飾,則無法創建該自定義活動的類型,並且構建失敗。)

刪除所有對TFS活動的引用並使用反射來加載與TFS相關的類型似乎也是另一個選擇,但是由於相同的原因而失敗,因為顯然,在由類自身內部的代碼調用之前,不能將BuildActivity屬性反射地應用於該類。外部代碼。

由於活動依賴的幾種TFS類型和方法存在於TFS 2010,TFS 2012和TFS 2013程序集中,並且由於該活動是針對.NET 4.0進行編譯的,因此我能想到的唯一合理的解決方法是創建3個獨立的版本:針對TFS / VS 2010(10.0.0.0)程序集進行編譯,針對TFS / VS 2012(11.0.0.0)程序集進行編譯,以及針對TFS / VS 2013(12.0.0.0)程序集進行編譯。

(當然,盡管我在開發機器上擁有上述程序集的TFS2010 / TFS2012 / TFS2013版本,但前提是Build Agents僅具有其TFS版本隨附的那些程序集的版本。)

另一個解決方法似乎是為所有Build Agent計算機指定綁定重定向,但是對於相當多的Build Agent計算機,這是不可行的。

是否有解決此問題的實際方法,還是我不得不創建3個構建?

如果沿用3個程序集的方式,從技術上講,您可以創建3個BuildProcessAssemblies文件夾並添加

Microsoft.TeamFoundation.Build.Client.dll

Microsoft.TeamFoundation.Build.Workflow.dll

Microsoft.TeamFoundation.VersionControl.Client.dll

庫到每個文件夾,然后將每個特定的控制器指向相關的文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM