2014-08-29 59 views
1

也許解決方案很簡單,但我找不到我想要的方式。如何在由其他庫項目組成的「visual studio 2013」​​中創建統一的c#庫項目

我有一個主要的c#庫項目,通過引用該項目使用我的所有應用程序。

現在我已經創建了另一個小型圖書館項目,我希望我的所有應用程序都能看到這個新項目中的命名空間/類。

因爲我不能/不應該將這個新項目的參考添加到我的所有項目。我想用這個新的小型圖書館來擴展我的主圖書館。

但是,只是拖動主庫內的類不是一個選項,因爲我有更多的這些迷你庫,需要根據情況插入和取出。

* 因此,我想添加此庫的引用到我的主庫中,並使我的所有應用程序都能看到新的庫代碼。 但是,這個想法很酷,我期待它能夠工作,但它不起作用。

我這麼想嗎?我還有什麼可以擴展我的主庫? 預先感謝您。

回答

0

我同意Bob Horn的看法,這不是它完成的方式(通常)。但是我有另一種可能的解決方案如果這個項目還不算太大,也就是說,它仍然可行。我發現這可以在除了最大的應用程序之外的所有應用程序上完成。

實質上,您的問題是由古代程序員在石器時代早期實現稱爲「N層」架構時所解決的。這應該給你一個提示,因爲你的項目正在增長,你需要重新構造/重構並以新的/舊的方式重新思考它。

舉例...大多數項目需要以下條件:

  • 數據庫層,
  • 庫層(傳統上被稱爲數據庫訪問層)(即實體框架或NHibernate的或任何自動生成的類)
  • 領域層(也稱爲其他不太好的名稱中的商業邏輯層)
  • 測試層(你單位/集成測試)
  • 服務層(這可以讓你的所有後端的東西被包含在一個地方個體經營)
  • UI層(這可以讓您的各種UI通過服務層訪問您的系統)

注意唯一具有複數的層是UI層。這是因爲您可以爲Apple ICoffeeMaker或IWashingMachine或IBoobImplanter或任何蘋果下一步想要發明的新設備編寫控制檯UI,Web UI,UI,Windows用戶界面,Linux用戶界面,UI Android,基本上就是你想要的任何設備的用戶界面。

所有這些UI層都訪問服務層,這會強制所有希望訪問系統的應用程序以完全受服務層控制的方式進行操作。

這也有將所有相關代碼包含在一個地方的好處,它通常對維護,安全性,可測試性,驗證等有很大的好處,並使UI層自由地做他們最擅長的事情......顯示信息。

最後,您還可以非常輕鬆地將所有最新和最好的設計模式應用到這樣的系統中,因爲您所要做的只是實現您認爲必須分離的層之間的接口,並且您正在進行中到完整的DI/IOC和健康飲食爲您的項目提供的所有其他好東西。

很多人可能會說,這是小項目的工作太多了,但...

  • 您可以模板它,使其非常快速和容易的事情。
  • 如果模板正確,只需添加系統增長時真正需要的圖層。
    • 雖然一旦你做了這一次,你會看到的好處,並通常會以同樣的方式啓動所有新項目(因爲它會更容易啓動,而不是稍後轉換爲它,因爲你會發現)。
  • 你應該考慮到,任何一個成功的系統總是開始時小,但不可避免地
    • 成長爲一個更大的系統,
    • 變得更大系統的一部分,
    • 配件獲得其他系統重用。

,並從一開始就正確的結構有助於這一增長。

我不知道這是否會回答您的問題,但是當我有空閒時間時,我會製作YouTube視頻教程來解釋如何正確執行此操作。

+0

感謝您的努力,它不完全回答我的問題,但你所建議的是正確的方式來做項目,這是我在做什麼大氣壓。只要準備好了,我會有興趣觀看你的視頻。 我已經開始添加新的功能「在該層定義內」作爲文件夾內的類。進入我的主項目,這樣,其他引用項目可以立即看到新的接口和類等 但仍然有問題,但有趣的是,我只是無法找到我的問題的一些解決方案。而我的下一個問題就是其中之一。 – Eyyildiz 2014-12-10 13:08:14

0

是的,你錯過了一些東西。 :)它不這樣工作。僅僅因爲您的主庫引用了另一個庫,並不會使您的應用程序可以使用該其他庫。您的其他應用必須引用其他庫。

因爲我不能/不應該將這個新項目的參考添加到我的項目的所有 。

爲什麼?如果您的應用需要引用它們,請參考它們。這就是它的工作原理。

+0

感謝您的回覆!這真是一個令人沮喪的情況,我一直在按照你所說的方式去做,直到現在,一旦我有時間,我希望最終解決這個問題。 看到,我有許多Xamarin ios應用程序使用主庫A和許多Windows應用程序使用主庫B 現在,他們使用單獨的庫,因爲DLL的內部窗口大多數時間不工作在IOS。 但我仍然有很多共享*類文件內部的A和B庫,並且它們不同步。 我想創建一個C庫和子項目這裏面的A和B ... – Eyyildiz 2014-08-29 13:42:49

相關問題