2010-07-14 106 views
0

我有使用Visual Studio 2010 TFS使用外部庫構建項目的問題。Team Foundation Server 2010:使用外部庫構建

在解決方案的根源上,我有一個「libs」文件夾和我所有的共享庫,並且從那裏引用這些庫。

當我建立了項目,一些圖書館都沒有考慮,我得到了以下錯誤消息:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (1360): Could not resolve this reference. Could not locate the assembly "Spring.Data". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

我試圖從調試更改解決方案配置到放行,找到另一個文件夾中的共享庫...我沒有設法通過它。

任何想法,我怎麼能得到這個庫在構建中使用?

謝謝, 大衛

回答

2

的第一步是驗證你使用正確的相對路徑正確引用的DLL。打開項目文件的XML並確保路徑是相對的,而不是絕對路徑(「....」與「C:\ Code \」)。

如果路徑全部正確,下一步是確保文件被下拉到構建服務器的Workspace中。您可以通過檢查服務器上的構建文件夾來驗證。如果它們不存在,那麼工作空間映射可能會遇到問題,這些映射會定義在開始構建時要獲取的文件夾。

這些是我見過的最常見的問題。如果這些都是正確的,那麼您需要更多的診斷信息。

+0

絕對路徑每次都會殺死你。 – Robaticus 2010-07-14 13:25:16

+0

我會檢查這一點。但乍一看,它看起來像是使用來自bin/debug的庫的版本 – davandries 2010-07-15 18:56:28

+0

你的意思是你在另一個項目的bin/Debug文件夾中而不是在libs文件夾中引用dll?如果是這樣,那就是你的問題。編譯輸出文件夾在構建服務器上不同,因此您的項目指向最可能不存在或爲空的文件夾。 – 2010-07-15 19:55:17

1

檢查您的提示路徑。有時有陳舊的引用有...

也許我能引用外部庫時提供一個良好的做法:

  • 複製你的外部庫或編譯的東西,從其他球隊在你的公司在開發文件服務器上格式:
  • 爲每個解決方案文件創建一個副本腳本並將其添加爲解決方案項目。爲開發者解決方案文件中的每個外部庫添加若干xcopy命令,以便正確構建該解決方案文件。
  • 創建一個腳本來創建子虛擬驅動器(使用dos命令subst)並將其映射到您的工作區,例如R驅動器,並在Windows啓動時激活此腳本以使其始終可用。該腳本專用於開發人員,並映射到開發人員工作區。
  • 創建您使用R驅動器映射的所有文件引用。例如:R:\ NiceLib \ 1.0 \ nicelib.core.dll

這樣,你得到你的TFS乾淨,與外部各方的只有你自己的來源和所有編譯的東西,甚至在你的公司的其他球隊,存儲在dev文件服務器上。

+0

如何使用此方法處理引用dll的版本控制?當您執行某個分支來嘗試更新版本的外部程序集或修補較舊版本的應用程序時會發生什麼? – 2010-07-15 19:58:44

+0

我檢查了提示路徑。他們看起來OK – davandries 2010-07-15 22:22:00

+0

@John:每個外部庫必須有它的版本nr;一旦存儲在文件服務器上,它將被保護以進行覆蓋;在我的示例中,當試用新版本的lib時,只需在開發文件服務器R上創建一個新的子文件夾:\ NiceLib \ 1.0.1 \ nicelib.core.dll – 2010-07-19 06:27:00

0

我遇到過使用Visual Studio 2010 TFS的類似問題。經過幾天的頭撞在步驟之下爲我工作。

  1. 複製所有外部DLL 到一個單獨的文件夾(其中TFS拋出錯誤的DLL)。

  2. 簽入源代碼管理中的文件夾(確認是否還有文件夾以及文件夾。如果不是,請手動將它們簽入。)。

  3. 在您的項目中,刪除引發錯誤的dll,並將它們再次從 單獨的文件夾創建。
  4. 構建應用程序並檢查項目。
  5. 現在編輯構建定義。轉到工作區選項卡。爲單獨添加的參考文件夾添加 工作區。
  6. 在源代碼管理列下,選擇您簽入的單獨文件夾的位置。在構建 代理列中記住路徑,記住構建單獨的參考文件夾的結構。保存並運行。

說明:工作區的Build Agent列下給出的路徑會將外部參考文件夾複製到構建服務器中。構建服務器將需要此文件夾來構建應用程序。 注意:不要將您的bin位置作爲對外部dll的引用。解決方案清理完畢後,Bin將被刪除,並且引用將會消失。