2011-11-29 52 views
4

在我的teambuild我們用自定義生成過程的活動,這是在TFS 2010 - 自定義生成的活動沒有部署

\BuildProcessTemplates\CustomAssemblies\MyActivities.dll 

部署構建控制器被配置爲從該路徑加載組件。

如果我簽入新的程序集,那麼teambuild不會自動加載新程序集,而是使用舊程序集。事實上,最新版本的流程模板,似乎使用,因爲我得到的錯誤:如果我重新編譯器服務,那麼最新的組件被認爲是

"TF215097: An error occurred while initializing a build for build definition <myTemplate> Cannot create unknown type <any new type>" 

如何讓teambuild自動加載最新的程序集,而不必強制重新啓動控制器?

+0

將文件簽入到由構建控制器監視的源控制路徑時,控制器應自動重新啓動並獲取更改。我不認爲你應該手動重新啓動它。 – Danny

回答

1

嘗試將MyActivities.dll安裝到GAC中。我在GAC中擁有所有自定義程序集,但沒有發現任何問題。

+1

只有當您需要更新二進制文件時,纔會有效嗎?他所遇到的問題(我也碰到過)是,構建代理*應該*與源代碼控件交談以將二進制文件更新爲最新版本,但由於某種原因,它僅在啓動時才執行(重新啓動服務器/服務做到了,但這有點太過沉重)。 – superlime

5

終於明白了這一點。幾個月來一直讓我瘋狂。即使您的二進制文件在技術上有所不同(即二進制差異),但代理程序只有在文件版本不同時纔會刷新。

所以更具體地說,在我的版本「MyActivities.dll」,我不得不增加我的AssemblyInfo.cs以下兩行(舊版本字符串爲1.0.0.0):

[assembly: AssemblyVersion("1.0.0.1")] 
[assembly: AssemblyFileVersion("1.0.0.1")] 

一旦我這樣做,我做了一個正常的程序集構建,然後檢查了新的二進制文件。代理商在幾分鐘內刷新了新版本! :d

其他(少真棒)選項,如果你不能因爲某種原因更新版本:

  • 入住虛擬文件到同一目錄。如果有任何文件從CustomAssemblies目錄中添加/刪除,它會強制刷新所有文件
  • 將「版本控制路徑爲自定義程序集:」值更改爲某個虛擬值(無所謂),應用新值,然後回到原來的目錄。任何時候路徑改變,都會強制刷新所有文件

儘管如此,「最佳」解決方案只是更新文件/程序集版本。

+0

感謝您的額外提示。我不得不使用'更改版本控制路徑'選項,因爲碰撞版本不適合我 –

1

當您將簽入文件添加到由您的構建控制器監視的源控制路徑時,控制器應該在運行構建時獲取最新的dll。

在我的情況下,當我運行構建使用相同的控制器,其中我已經做了一些更改後,在運行構建過程中,控制器會自動重新啓動,並且構建失敗,說構建過程失敗bcoz作爲重啓操作的一部分,控制器停止

它試圖獲取最新的DLL,但作爲重新啓動操作的一部分。

那麼,是否有任何條件或方案的控制器重新啓動... ???

將MyActivities.dll安裝到GAC中。它會做什麼以及它如何幫助我解決我的問題。

我跑了構建和獲得如下錯誤....

構建停止,因爲編譯器「Mycontroller-控制器」是不可達:控制器狀態已經被編譯服務在1/6改變/ 2014 9:31:14 AM GMT。原因:Service'Mycontroller - Controller'作爲重啓操作的一部分停止。

我已經做了一些簽入到程序集之前,所以我想控制器重新啓動獲取最新的程序集,所以我得到了這個錯誤。

這裏如何重新啓動conroller?是否有其他條件/控制器重新啓動的情況?