用VS2010建立解决方案,用于生成多个Dll的项目

来源:互联网 发布:网络机房维保 编辑:程序博客网 时间:2024/04/30 22:54

转自:http://www.blueidea.com/microsoft/vs2010/2010_con/2010081301.htm

 

三层结构,会有多个项目。为了让各项目之间的关系反映在目录结构上所以要建立一个解决方案。

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

原创粉丝点击