2014-03-27 33 views
5

我們選擇使用nuget來管理私有(.NET)庫,但已經對DLL的版本化變得越來越乏味。使用Nuget庫進行開發和調試

比方說,我們有以下共享庫在兩個項目:

  • Shared_DAL
  • Shared_Model
  • Shared_BLL
  • Shared_Mvc((上Shared_DAL和Shared_Model取決於)取決於Shared_BLL和Shared_Model

然後,在每個具體項目中我們都有:

  • Project_Model(取決於Shared_Model)
  • Project_BLL
  • Project_Mvc(上Shared_DAL,Shared_Model和Project_Model取決於)(取決於Shared_Model,Shared_BLL,Project_Model和Project_BLL)

問題我們現在的情況是,要測試在特定項目中對Shared_BLL所做的更改是非常困難的。目前,我們要:

  • 建立Shared_BLL作爲NuGet包
  • 的NuGet包部署到私有倉庫
  • 運行update-包裝Shared_BLL含Project_Mvc和Project_BLL

解決方案這是非常困難和巨大的開銷。

我們嘗試了另一種方法,其中一個將暫時刪除DLL引用,並以修改後的DLL文件的直接引用代替它們。但是,你必須撤銷對項目的所有改變,這並不是特別好。

我在這裏錯過了什麼嗎?如果您在開發生命週期中使用NuGet,那麼您如何處理DLL?

更新:對於誰是面臨同樣的問題的人,我們已經搬離的NuGet距離,直到這被整理出來,並依靠把DLL文件中的特定文件夾,並在每個項目中使用的HintPath絕對路徑文件。構建事件會更新定義目錄中的DLL,並且可以調試Shared和Project。

+0

也許擴展http://visualstudiogallery.msdn.microsoft.com/68878c27-110c-43ec-ae61-3ea3f7aae88c對你的第二種方法很有用(在nuget和項目引用之間切換) –

回答

1

我看你回到引用普通的DLL而不是Nuget包,但我決定回答。也許別人會對我關於這個話題的看法感興趣。

最後我做了那巨大的研究,我發現了一些事實,可以用來解決問題與遠程的NuGet參考和當地的NuGet基準之間的切換。

可以撥打nuget更新來引用請求包的最新版本。 因此...例如,您有兩個nuget存儲庫(遠程和本地)。本地存儲庫是普通文件夾。

1. You build Project_Mvc from plain sources and nuget automatic restore downloads
Shared_BLL-1.0.0 from remote repository where you have your "production builds" 2. You decided to build Shared_BLL locally. As you do it in your IDE it generates Shared_BLL.9.99.999.0 package. 3. You call update and rebuild Project_Mvc and voila! Shared_BLL.9.99.999.0 is now referenced here.

你寫的,這是很大的開銷......它可以自動通過添加額外的項目與解決方案來完成。例如,_UpdatePackages項目(Empty C#項目模板)將始終位於解決方案的項目列表之上。另外,這也可以向後完成。當您從本地供稿中刪除Shared_BLL.9.99.999.0並調用更新時 - 將從第1點替換參考。

解決此問題的另一種方法是使用ripple。由於受到一些限制,我無法在我的項目中使用它,但在您的情況下它可能會正常。