用VS2010建立解決方案,用於生成多個Dll的專案

Mindy_Lou發表於2015-11-29

三層結構,會有多個專案。為了讓各專案之間的關係反映在目錄結構上所以要建立一個解決方案。

1.建立解決方案: 
檔案->新建專案->其它專案型別->Visual Studio解決方案->空白解決方案。

2.在解決方案裡新增第一個專案 
建立空白解決方案後,在vs2010右邊的解決方案資源管理器中,可以看到剛建立的解決方案,單擊選中它,然後右鍵選擇“新增”->新建專案->Visual C#- >ASP.NET Web應用程式 ,把名稱命為:Web,點選確定後就在解決方案裡建立了一個Web專案。

3.在解決方案裡新增第二個專案 

在解決方案里加入第一個專案後,再加入第二個專案,第二個專案和新增與第一個專案的新增有一點差別,新增第二個專案的步驟是:檔案->新建專案->Visual C# ->類庫。

選擇“類庫”以後,把名稱命名為:BLL,在最下面的“解決方案”裡選擇“添入解決方案”,意思就是把新建的這個BLL專案,添入到建立的KaiBo解決方案裡。

剛才建立的兩個專案就在解決方案裡很好的組織起來了。

4.在解決方案裡新增其它的專案 
新增兩個專案後,為解決方案新增更多的專案就只需選中解決方案,右鍵“新增”->新建專案->Visual C#->類庫。再自已命名專案名稱就可以了。

1、WEB=表示層 2、BLL=業務邏輯層 3、IDAL=資料訪問層介面定義 4、Model=業務實體 5、DALFactory=資料層的抽象工廠(建立反射) 
6、SQLServerDAL=SQLServer資料訪問層 / OracleDAL=Oracle資料訪問層 7、DBUtility 資料庫訪問元件基礎類 

多了一個WebControls專案,那是我寫的一些自定義控制元件。如果需要,還可以往解決方案里加入更多的專案。到此為止解決方案就建立完成了。但是各專案之間還是各自獨立的 ,要想相互呼叫就要建立專案間的引用關係。

在vs2010裡面把解決方案中的各個專案都建立好之後,就要實現各專案之關的引用了.在前面,我們建立了7個專案.它們分別是:
WEB:表示層 
BLL:業務邏輯層 
IDAL:資料訪問層介面定義 
Model:業務實體 
DALFactory:資料層的抽象工廠(建立反射) 
SQLServerDAL:SQLServer資料訪問層 
DBUtility :資料庫訪問元件基礎類 
各專案之間的引用關係可用下圖表示:

Web 引用 BLL,SQLServerDAL 
BLL 引用 IDAL,Model,DALFactory(使用DALFactory建立例項) 
DAL 引用 Model 
Model 無引用 
DALFactory 引用IDAL,通過讀取web.config裡設定的程式集,載入類的例項,返回給BLL使用 
SQLServerDAL 引用 Model和IDAL,DBUtility.被DALFactory載入的程式集,實現介面裡的方法 
在解決方案裡建立專案間的引用步驟為:選中需要新增引用的專案→右鍵選擇"新增引用"→"專案",然後選中要引用的專案的名稱.點確定完成專案的引 用.
把各專案之間的引用關係建立好以後,一個完整的解決方案就算是拾建好基石了.接下來,就是寫程式碼實現各專案的作用了.

 

另外參考:在VS.NET中,如何將一個asp.net專案的多個模組編譯成不同的DLL?

問:
概況:
有一個基於ASP.NET的系統,系統由一個基礎框架和多個業務模組組成,各業務模組之間的耦合性不強——但每個業務模組對基礎框架高度依賴。

需求:
希望能夠將基礎框架和各業務模組單獨編譯成不同的DLL,部署時可靈活的根據客戶需求增刪業務模組。
______________________________________________________________________________________________
答1:
建立一個新的解決方案,在解決方案上點選右鍵
在其中建立新建專案
每個新的專案就是你的業務模組,他們會編譯成單獨的DLL
在要引用不同的專案的dll時,可以使用點選 引用->專案->選擇所要引用的專案
______________________________________________________________________________________________
答2:
在一個解決方案下面建立多個專案,每個專案對應你的模組,每個專案輸出型別都是類庫
______________________________________________________________________________________________
答3:
在新建的專案為:其它專案--〉企業級模版專案--〉c#或vb分散式應用程式。

專案自動建立四層結構的專案。之後自己在每一層建立每個dll專案。

如果a模組使用b模組,就在a模組的專案上新增引用,選擇專案-〉b專案。

以上就是簡單的多模組引用。
______________________________________________________________________________________________
答4:
將基礎框架及各相對獨立的業務模組分到不同的專案裡。
如果有多個層次,可以使用企業級模板專案來分級,沒有多個層次的,把所有的專案都直接放在解決方案下好了。
______________________________________________________________________________________________
答5:
在新增新專案時,新增類庫專案,該專案編譯生成的就是你要的DLL檔案。
在其他專案中引用生成的DDL就可以了。。
______________________________________________________________________________________________
答6:
不知道你有沒有邏輯程,
你可以單獨編譯cs檔案,
然後共享在每個模組.
______________________________________________________________________________________________
答7:
不在VS.NET中倒是可以.
______________________________________________________________________________________________
答8:
首先感謝大家的熱情答覆!祝大家新年快樂!

如上面各位的回答,將模組分佈到專案裡面,那我需要在各個業務模組中共享基礎框架中的狀態資訊,如獲取系統的執行狀態(儲存在application中)、獲取使用者的登入資訊(儲存在使用者session中)等,採取這種“引用專案生成的DLL”的方式,能夠實現嗎?

首先申明:我是.net新手。

就我的理解(還沒來得及試驗):每個asp.net專案都是一個web應用,如在vs.net中新建一個c#的asp.net專案,就會有自己的AssemblyInfo.cs, web.config, Global.asax等檔案,這樣的話,要在各個專案與同一個基礎框架(也是一個asp.net的專案)之間共享應用的執行狀態,應該是行不通的!

不知道我的理解對不對?
______________________________________________________________________________________________
答9:
ding
______________________________________________________________________________________________
答10:
當然能滿足你的要求.
______________________________________________________________________________________________
答11:
模組編譯後基本上就可以脫離專案了
______________________________________________________________________________________________
答12:
to Hanks(Hank) 

你的理解是對的,
Session 不能在專案間傳遞的,建專案時,每個專案都會生成自己的web.config, global.asax, 但你可以把你的業務模組編成不同的專案後,生成相應的.dll, 
然後再在你的專案中引用這些.dll, 就可以引用相應的專案了:)

Happy Spring Festival to every one!
______________________________________________________________________________________________
答13:
建立的專案為“類庫”用來放你的邏輯層,再在WEB專案中引用,但專案之間不能互相引用,那就用某個專案去直接引用另外個專案生成後的DLL
______________________________________________________________________________________________
答14:
舉個例子,比如:

某系統A由5個基礎模組和10個業務模組組成,

其中假設有一個業務模組Xxx,該模組物理上由兩個dll和一些頁面(包括aspx, html, js等)組成。兩個dll分別是:
一個封裝業務邏輯的dll,假設為XxxModel.dll
一個用於封裝aspx頁面behind code的dll,假設為XxxView.dll

這個模組需要與基礎模組通訊,訪問基礎模組中的系統狀態。


象這樣怎麼做?

______________________________________________________________________________________________
答15:
UP
______________________________________________________________________________________________
答16:
TO
就我的理解(還沒來得及試驗):每個asp.net專案都是一個web應用,如在vs.net中新建一個c#的asp.net專案,就會有自己的AssemblyInfo.cs, web.config, Global.asax等檔案,這樣的話,要在各個專案與同一個基礎框架(也是一個asp.net的專案)之間共享應用的執行狀態,應該是行不通的!

〉〉可行的辦法::
在不同專案間通用session等資訊:
http://www.csdn.net/Develop/Read_Article.asp?Id=18546

相關文章