2008-09-30 48 views
4

我們構建了一個用於內部使用的自定義應用程序,用於訪問TFS。我們使用Microsoft庫(例如Microsoft.TeamFoundation.dll)。訪問TFS的C#自定義應用程序

將此應用程序部署到已安裝Team Explorer或VS的PC時,一切正常。當它被部署到沒有安裝它的PC時,它會失敗。

我們包含了所有需要的DLL,但是我們得到的錯誤是「Common Language Runtime detected and invalid program」。在適度無害行出現的錯誤:

TeamFoundationServer myServer = new TeamFoundationServer(「ourserver.ourdomain.com」); 

有趣的是,流行TFSAdmin工具(當你在需要的DLL exe文件目錄下降)給出了同樣的錯誤。

我還注意到許多其他訪問TFS的自定義應用程序(例如http://hinshelwood.com/tfsstickybuddy.aspx)也需要安裝Team Explorer或VS才能正常工作。

顯然,這些DLL是不夠的,發生這些安裝時會發生一些魔法。有人知道這是什麼嗎?任何人都知道如何讓魔法發生?

+0

您確定TFS客戶端程序集沒有未包含的外部依賴關係,或者它們未被Windows安全鎖定? – 2008-09-30 04:00:02

回答

9

編寫使用TFS對象模型的應用程序的「官方支持」方式是在機器上安裝Team Explorer。這對服務的目的尤爲重要 - 即確保在將VSTS服務包應用於客戶機時,TFS API也會得到升級。對於TFS API沒有重新分配權限,因此它們不應隨應用程序一起提供。

順便說一句 - 另外請注意,如果您正在編寫使用TFS OM的應用程序,那麼一定要將其編譯爲「X86」而不是「任何CPU」。 TFS API程序集都標記爲X86,但如果您的應用程序標記爲「任何CPU」,那麼在x64機器上它將由64位CLR加載,但當動態加載TFS程序集時,它將失敗。

祝你好運,

馬丁。

+2

請注意,使用TFS 2010對象模型的代碼不需要再編譯爲X86,因爲2010 API現在可以在兩種版本的CLR中使用。 – 2010-03-26 20:54:34

相關問題