2012-03-05 144 views
7

我有兩個方案:我應該如何從另一個解決方案中引用程序集?

  1. 有該公司的框架項目,所有項目我們將使用這個框架。

  2. 有一個自定義的框架項目是特定於客戶端,只有公司的一些人需要使用此DLL。

這兩個框架都存儲在TFS分離的解決方案。

應該如何使用其他項目的參考?我應該把這兩個程序集放在GAC上嗎?我應該手動複製輸出組件嗎?建議什麼,爲什麼以及如何使用它?

+0

雖然這可能是沒有價值你的情況,如果你使用Subversion的svn:externals的將是一個相當簡單的解決方案這個情況。 – Candide 2012-03-05 14:26:02

回答

4

定製的框架

手動複製輸出組件自定義項目,除非你能包括它的直接源在溶液中。

共享框架

我會用,而不是GAC的NuGet任何時間,因爲你擺脫任何版本問題或者創建一個單獨的安裝包框架(因爲你GAC)

這很容易創建一個私人nuget服務器。只需創建一個新的MVC3項目並安裝一個nuget服務器包:http://docs.nuget.org/docs/creating-packages/hosting-your-own-nuget-feeds

5

將引用的程序集添加到其他項目的庫文件夾中,並手動更新它。 如果經常更新,請考慮使用您自己的NuGet Feed。

1

您應該只在需要時將程序集安裝到全局程序集緩存中來共享程序集。作爲一般指導原則,將程序集依賴關係保持爲私有,並在程序目錄中找到程序集,除非明確需要共享程序集。此外,沒有必要將程序集安裝到全局程序集緩存中,以使它們可以通過COM互操作或非託管代碼訪問

由於上述原因,我會將第一個框架ddl放入GAC。

我把第二個框架到在你的TFS通過實例「庫」稱爲設計文件夾來添加從參考(所有團隊必須具有相同的文件夾結構,以避免丟失的引用)

1

所以#2自定義Framework項目與#1是一樣的,但爲特定客戶端定製?

將自定義框架源代碼作爲正常框架源代碼的一個分支,而不是將其作爲一個實際單獨的解決方案保留是否合理?我想這要取決於差異有多大。

正如我所看到的,使其成爲分支的優勢在於,您應該能夠更輕鬆地合併兩個分支之間的更改。設想一個錯誤修復或一個新功能在#1中完成,並且還需要應用到#2​​; TFS應該能夠使這更容易,只要TFS知道#2只是#1的一個分支。

無論如何,爲了解決您的問題,我的想法是,您的其他項目應引用這些項目的輸出程序集。

我會將框架程序集複製到其他項目的解決方案文件夾下的文件夾中。我通常稱之爲我的「依賴」,但它並不重要。讓你的項目添加對這些彙編文件的引用。我假設您的自定義框架程序集將具有與常規框架程序集相同的名稱,因此您可以根據需要輕鬆地交換這些文件(或者使用自定義框架創建單獨的項目分支)。

我不鼓勵將程序集放到GAC中,因爲如果忘記從GAC中卸載較舊版本的程序集,在開發過程中很容易將其自動啓動。

3

聽起來我經典的項目引用vs二進制參考決策制定。離開這個GAC。

在拓撲我們使用這樣的事情就像你的要求:

 
|___$/3rdParty/ 
|  |__BaseFramework.dll 
|  |__CustomFramework.dll 
|  |__log4net.dll 
|  |__WPFToolkit.dll 
| 
|___$/Sources/ProjectName/NormalProject.sln 
|       | 
|       |__[Binary Reference] "../../3rdParty/BaseFramework.dll" 
|       |__[Project Reference] 
|       |__[Project Reference] 
| 
|___$/Sources/Common/BaseFramework.sln 
|     | 
|     |__[Project Reference] 
|     |__[Project Reference] 
|     |__[Project Reference] 
|     |__[Project Reference] 
| 
|___$/Sources/Custom/Acme/AcmeProject.sln 
|       | 
|       |__[Binary Reference] "../../../3rd-party/CustomFramework.dll" 
|       |__[Project Reference] 
|       |__[Project Reference] 
| 
|___$/Sources/Custom/CustomFramework.sln 
        | 
        |__[Project Reference] 
        |__[Project Reference] 
        |__[Project Reference] 
        |__[Project Reference] 

相關問題