我有以下情況。我們正在開發一個多層應用程序,所以我爲每個圖層製作了不同的程序集。讓我們稱他們爲Top,Middle和Base。他們依賴於:.net程序集依賴關係鏈
Top-> Middle-> Base,因爲Top使用來自中部和中部的基部。
現在我們將有一個secong Applikation Top2,它只需要來自Middle的一些不使用Base的任何類。
有沒有辦法,在Top2的部署中不包含Base?
當試圖編譯時,VS告訴我我還需要對彙編庫的引用。
最佳 托馬斯
我有以下情況。我們正在開發一個多層應用程序,所以我爲每個圖層製作了不同的程序集。讓我們稱他們爲Top,Middle和Base。他們依賴於:.net程序集依賴關係鏈
Top-> Middle-> Base,因爲Top使用來自中部和中部的基部。
現在我們將有一個secong Applikation Top2,它只需要來自Middle的一些不使用Base的任何類。
有沒有辦法,在Top2的部署中不包含Base?
當試圖編譯時,VS告訴我我還需要對彙編庫的引用。
最佳 托馬斯
聽起來像「中」是有點大了它的靴子。
程序集不應該引用它不需要的任何東西。所以,你的情況聽起來像是分解組件的好選擇。
當前
Application One -> "Middle.dll" -> "Base.dll"
您的提案
Application One -> "Middle.dll" -> "Base.dll"
Application Two -> "Middle.dll" -> "(Redundant) Base.dll"
這是出現在一些非常常用的對象基本上是與業務邏輯集中unneccesserily一個典型的問題。也就是說,您可能在Middle.dll中有對應用程序有用的實用程序類,但它們並不真正需要在那裏。你可能會更好與單獨的公用事業DLL。
建議
Application One -> "Middle1.dll" -> "Base.dll"
-> "Middle2.dll"
Application Two -> "Middle2.dll"
所有這一切都需要使用Base.dll,目前存在於Middle.dll的功能,應移至Middle1.dll。這樣,如果你只需要使用非依賴代碼,你可以參考Middle2.dll
它可能是一個大的重構,取決於你的代碼庫,但後來在線上,你會感激它!
好處這個
注:很顯然,我不是建議你應該叫他們Middle1和Middle2。但你明白了。
謝謝,幸運的是,我們的項目還很年輕,所以重構是非常重要的。現在一切都很好。解決方案是將所有沒有外部引用的數據類放入一個程序集中。 – Thomas
當然,把中間分成兩部分! – KingCronus
您的意思是,Middle-1使用Base和Middle-2的Middle-Middle和Middle-2,但Middle-2不使用Base? – Thomas
是的。我會在答案中詳細說明。 – KingCronus