c# 中型项目类库之间的引用关系问题?(直接引用类库好还是引用类库生成的.dll好?)

橙色阳光 2019-02-20 11:14:24

举例来说
【直接引用类库】
三层架构制作的asp.net网站,三层之间的相互引用如下:
(引用方法:对应项目名称上右键——添加引用——项目——找到需要引用的项目双击)

Model 层 不引用任何项目

DAL 层 引用Model

BLL 层 引用Model,DAL

UI 层 引用Model,BLL

这是最常见的方式。

【直接引用类库生成的.dll】
DAL 层、BLL 层、Model 层 生成成功后,去bin目录 提取对应的.dll放到 Lib文件夹中,然后其他类库统一从中引用
(引用方法:对应项目名称上右键——添加引用——浏览——找到需要引用.dll)

我这边的项目算中型吧,各位大神发表下看法 这俩种方式的优劣,及现在自己项目的引用的方式。

再我看来小项目诸如只有三层,那么直接引用类库,如果Model层修改了 整个解决方案重新生成下或者单独生成类库,引用该类库的其他类库就直接实时更新了。方便简单

如果时大型项目光类库就十几个或者几十个,这种方式我觉得缺点很大,重新生成一次很耗费时间,解决方案看着就吓人。
把自己需要用的类库,直接引用类库方式,其他诸如公共代码,其他项目组支持的,直接引用.dll,其他项目组更新的时候,提供最新的.dll覆盖就好了。
我这样理解对吗?

对于中型,用到不是特别多的类库生成的时候指定【统一输出路径】,其他类库引用【统一输出路径】中的.dll,这样类库关联看上去也简单很多。

【疑问】关于【直接引用类库】和【直接引用类库生成的.dll】 性能上谁更好些?

...全文
1123 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
橙色阳光 2019-02-23
  • 打赏
  • 举报
回复
引用 18 楼 正怒月神 的回复:
[quote=引用 17 楼 橙色阳光 的回复:]
[quote=引用 16 楼 正怒月神 的回复:]
楼上都讲的差不多了,也就是使用生成,而不是重新生成。
这里,我在说一下对于你说的大项目,
已经开始越来越多的人使用微服务了。
微服务比较少遇到你说的这个问题,
哪怕是真的多个地方引用了一个bll(例如用户model),但是这种情况也比较少见。

说的是这个吧http://baijiahao.baidu.com/s?id=1600354904549354089&wfr=spider&for=pc[/quote]
恩,是的。不过具体微服务概念和实现,需要你自己去学习了。[/quote]
重开一贴 此题结贴先
正怒月神 2019-02-22
  • 打赏
  • 举报
回复
引用 17 楼 橙色阳光 的回复:
[quote=引用 16 楼 正怒月神 的回复:] 楼上都讲的差不多了,也就是使用生成,而不是重新生成。 这里,我在说一下对于你说的大项目, 已经开始越来越多的人使用微服务了。 微服务比较少遇到你说的这个问题, 哪怕是真的多个地方引用了一个bll(例如用户model),但是这种情况也比较少见。
说的是这个吧http://baijiahao.baidu.com/s?id=1600354904549354089&wfr=spider&for=pc[/quote] 恩,是的。不过具体微服务概念和实现,需要你自己去学习了。
橙色阳光 2019-02-22
  • 打赏
  • 举报
回复
引用 16 楼 正怒月神 的回复:
楼上都讲的差不多了,也就是使用生成,而不是重新生成。
这里,我在说一下对于你说的大项目,
已经开始越来越多的人使用微服务了。
微服务比较少遇到你说的这个问题,
哪怕是真的多个地方引用了一个bll(例如用户model),但是这种情况也比较少见。

说的是这个吧http://baijiahao.baidu.com/s?id=1600354904549354089&wfr=spider&for=pc
正怒月神 2019-02-22
  • 打赏
  • 举报
回复
楼上都讲的差不多了,也就是使用生成,而不是重新生成。 这里,我在说一下对于你说的大项目, 已经开始越来越多的人使用微服务了。 微服务比较少遇到你说的这个问题, 哪怕是真的多个地方引用了一个bll(例如用户model),但是这种情况也比较少见。
iii13706698201ttt 2019-02-22
  • 打赏
  • 举报
回复
引用 5 楼 橙色阳光 的回复:
[quote=引用 4 楼 以专业开发人员为伍 的回复:]
嗯,vs 并不会生成那些不需要重新生成的工程。连这个都不知道,那么就先不要说你做过“中型项目”。

请教下
关于【直接引用类库】和【直接引用类库生成的.dll】 性能上谁更好些?[/quote]
发布项目都是编译成.dll引用的,在VS开发环境上,这个问题太偏了 没法回答
MSDN 也没讲 估计他也不知道
橙色阳光 2019-02-22
  • 打赏
  • 举报
回复
引用 13 楼 iii13706698201ttt 的回复:
解决方案下面的 【重新生成解决方案】会把这个解决方案下面的
不打了 你还是看链接吧。。。。VS---“重新生成解决方案”和"生成解决方案"的学习
或者去MSDN查,上面讲的都是以MSDN为准
好的
iii13706698201ttt 2019-02-22
  • 打赏
  • 举报
回复
解决方案下面的 【重新生成解决方案】会把这个解决方案下面的
不打了 你还是看链接吧。。。。VS---“重新生成解决方案”和"生成解决方案"的学习
或者去MSDN查,上面讲的都是以MSDN为准
iii13706698201ttt 2019-02-22
  • 打赏
  • 举报
回复
谁都想项目架构清晰,代码可读性强,代码逻辑写的又牛逼又可以学习借鉴,奈何公司项目就是一个坑,人员变动频繁,架构师水准没到位,或者架构到位了,底下的人没培训到位没理解,等于没架构各写各的,公共类库都不会用 总不能拿换工作来解决这问题吧,这样就一点职业道德都没有了 ,先应对吧
iii13706698201ttt 2019-02-22
  • 打赏
  • 举报
回复
引用 4 楼 以专业开发人员为伍 的回复:
嗯,vs 并不会生成那些不需要重新生成的工程。连这个都不知道,那么就先不要说你做过“中型项目”。

曾经的菜鸟变大神,嘲笑现在的小菜鸟
wanghui0380 2019-02-21
  • 打赏
  • 举报
回复
3.如果项目周期长,人员多,而且有人员变动。完了,那谁谁,过来下。怎么svn上的东西没用那个dll?那个dll谁开发的?什么,人都走半年了,那源代码在哪里?库在那里?
哦,在这里啊。???怎么这个代码和你们用的不是一个东西,这方法参数咋多一个?谁来说明一下
wanghui0380 2019-02-21
  • 打赏
  • 举报
回复
1.生成不会生成没有修改过的项目(除非你有特别大的变动,才会重新生成)
2.变动应该立刻享受到结果,大家用svn开发,1人修改大家都享受变动。
如果你喜欢单独dll,我得说。打架把兄弟!我都改了2星期了,你还在用旧的dll开发,很好,很强大,自己加班改吧,我不陪你!
如果说我把dll也放svn里,很好,很强大!你等着各种冲突吧,自己update完了,自己解决冲突。我也不陪你。
  • 打赏
  • 举报
回复
引用 7 楼 橙色阳光 的回复:
重新生成解决方案 ,VS不是按 生成顺序 每个都编译一遍得吗
没有必要重新编译的,vs不会去编译。除非你选择“重新生成”而不是“生成”菜单项。
  • 打赏
  • 举报
回复
嗯,vs 并不会生成那些不需要重新生成的工程。连这个都不知道,那么就先不要说你做过“中型项目”。
  • 打赏
  • 举报
回复
引用 楼主 橙色阳光 的回复:
如果时大型项目光类库就十几个或者几十个,这种方式我觉得缺点很大,重新生成一次很耗费时间,解决方案看着就吓人。
就算是10个项目在一个解决方案,谁说方案(引用其它工程的启动工程)生成的时候 vs 就一定要重新生成其它工程?
  • 打赏
  • 举报
回复
了解开发过程和开发能力,要看一个人的调试过程。引用不引用工程,自己考虑。
  • 打赏
  • 举报
回复
引用项目,对于你这种特殊情况,可以右键解决方案后,将不需要编译的取消勾选即可
橙色阳光 2019-02-20
  • 打赏
  • 举报
回复
引用 3 楼 以专业开发人员为伍 的回复:
[quote=引用 楼主 橙色阳光 的回复:]
如果时大型项目光类库就十几个或者几十个,这种方式我觉得缺点很大,重新生成一次很耗费时间,解决方案看着就吓人。


就算是10个项目在一个解决方案,谁说方案(引用其它工程的启动工程)生成的时候 vs 就一定要重新生成其它工程?[/quote]

重新生成解决方案 ,VS不是按 生成顺序 每个都编译一遍得吗
程序员的键盘 2019-02-20
  • 打赏
  • 举报
回复
?? 难道这两个操作结果不是一样的吗 引用项目后,编译的时候还是把引用到的项目编译成dll输出到bin里面吧,最后还是变成链接dll 不知道对不对
橙色阳光 2019-02-20
  • 打赏
  • 举报
回复
引用 4 楼 以专业开发人员为伍 的回复:
嗯,vs 并不会生成那些不需要重新生成的工程。连这个都不知道,那么就先不要说你做过“中型项目”。

请教下
关于【直接引用类库】和【直接引用类库生成的.dll】 性能上谁更好些?

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧