2013-01-11 35 views
3

由於我們構建/維護的產品數量衆多,因此我們有一個相當複雜的dll結構(> 100個程序集)。我們正在安裝TFS 2012.我們目前使用NuGet來管理對外部dll的引用。VS,Nuget,TFS - 管理複雜的內部依賴性結構

看來,Nuget可能是管理我們內部dll的答案。

這裏是我們的結構的一個示例:

  • Framework.dll
  • Business.dll
    • 引用:Framework.dll
  • Business.X.dll
    • 參考:Framework.dll
    • 引用:Business.dll
  • Application.X.dll
    • 裁判:Framework.dll
    • 裁判:Business.X.dll
    • 裁判:Business.dll

爲了完成NuGet,我爲每個程序集創建了一個nuget spec /包。然後每個包裹都包含它的依賴包(s)。

  • Framework.1.0.nupkg
  • Business.1.0.nupkg
    • 取決於:框架
  • Business.X.1.0.nupkg
    • 取決於:框架,業務
  • Application.X.1.0.nupkg
    • 取決於:框架,商業,Business.X

1)我創建的框架VS項目,建造它,和它打包到Framework.1.0.nupkg 2)我打開Business VS項目,並通過安裝Framework.1.0.nupkg 添加了對Framework.dll的引用。3)然後,我將Business VS項目構建並打包爲Business.1.0.nupkg 4)我重複了每個程序集(FYI,我用NuGetter來自動化這個)

我是無法協調本地開發人員機器和構建服務器之間的差異。

這是我的理解:

  1. 我不需要最後組裝存儲在TFS因爲的NuGet的包還原功能。
  2. 而不是引用程序集,引用是使用NuGet添加的。例如,在Business VS項目中,框架程序集是從Nuget Framework.1.0包中添加的。

但是,這使得彙編開發人員難以構建/測試新功能。如何開發Business和Business.X程序集的開發人員在本地(在他們自己的機器上)測試一個功能而不移除/讀取引用。這是必要的,因爲Business.X引用了已打包的業務,而不是本地生成的Business.dll。

我的目標:

  1. 使用一個構建服務器生產版本,共享組件
  2. 允許消費者應用程序引用
  3. 共享組件允許開發人員在當地之前添加到這些組件,以方便編譯/測試需要服務器版本

我認爲Nuget對於#1和#2運行良好,但我似乎無法完成#3。有一個更好的方法嗎?

感謝您的任何信息/指針!

+1

你不能使用單元測試來確保組件是好的嗎? – Betty

+1

我同意@Betty它看起來好像你只需要一些好的UTs就可以作爲他們的門控簽名的一部分包含在共享的asm開發者中 – allen

回答

0

每個程序集(DLL)都有一個單獨的NuGet程序包是過度殺傷 - 我期望你的大部分內部NuGet程序包都包含一組程序集,它提供了一個基本上獨立於其他程序集組的功能塊。

因此,這是不正確的模式:

要使用的NuGet做到這一點,我創建用於每個組件的規格的NuGet /包。

相反,您可能希望爲每個解決方案(.sln)創建一個或兩個NuGet包,假設您的解決方案是合理分組的。