查看dll文件源代码_转 | SourceYard 制作源代码包

点击上方蓝字关注“汪宇杰博客”本文转自林德熙的博客(lindexi.gitee.io)导语在项目开发中,将一个大的项目拆为多个小项目解耦,减少模块之间的耦合。因为如果将代码放在一起,即使有团队的约束,但只要能写出的代码就会有小伙伴写出,很快就发现各个模块耦合的代码很多。但是对一个项目的拆分会让拆分出来的每一个项目都编译出一个 dll 增加运行文件的启动时间。在开发中,常常会用到很多工具类...
摘要由CSDN通过智能技术生成

点击上方蓝字关注“汪宇杰博客”

ae2f7d774c33d5f615e6a6247114191b.png

本文转自林德熙的博客(lindexi.gitee.io)

导语

在项目开发中,将一个大的项目拆为多个小项目解耦,减少模块之间的耦合。因为如果将代码放在一起,即使有团队的约束,但只要能写出的代码就会有小伙伴写出,很快就发现各个模块耦合的代码很多。但是对一个项目的拆分会让拆分出来的每一个项目都编译出一个 dll 增加运行文件的启动时间。在开发中,常常会用到很多工具类,这些小轮子很多的功能基本就只有一个类,如何对这些小轮子进行管理?通过复制代码还是通过 Nuget 管理?

b817a6bedee570174aff17d368b3b4f3.png

如果使用复制代码的方式,很难知道从哪里复制代码,如果在很多项目都复制了代码,发现原来的代码存在一些虫子,很难修改所有复制代码的项目。通过传统 Nuget 的方式可以方便管理工具的更新,和引入工具,同时会将每个小轮子打包成一个 dll 这样会引入很多 dll 让软件启动的速度和运行的速度降低。关于 dll 数量和启动时间的测试请看 C# 程序集数量对软件启动性能的影响 介绍了程序集数量对软件启动性能的影响,运行的性能是在引用某个 dll 方法的时候需要加载这个 dll 降低速度。

有小伙伴问,为何不将所有的工具放在一个大的项目,这样每次只需要更新大项目的 Nuget 就可以,这样就可以解决引入dll的数量和管理小工具。

虽然将很多的工具放在一个程序集做一个 Nuget 的方式看起来不错,但是只是在很小的项目同时不能维护太久,在我现在的团队有一个库,这个库就是用来放小工具,但是在经过了一段时间,发现基本上所有小伙伴在不知道要将类放在哪个地方的时候,就会放在这个程序集里。同时因为所有工具都在一个程序集里,所有小工具都在相互引用。在我想要修复某个小工具的功能的时候,发现在这个程序集内这个工具已经有 99 引用,其中还有不少地方依赖 bug 编程,这时维护这样一个程序集的成功非常高,同时无法组织小伙伴不断将含义不明确的类放在这个程序集(这里不是在讨论代码审查问题,在我现在的团队是有明确的代码审查,然而没有人能说清这个程序集的功能),所以这就是为什么不建议所有小工具放在一个程序集的原因。另外如果都将代码放在一个程序集,用于分享也是比较难,有小伙伴向我要一些工具,假设我都放在一个程序集里,那么我只能通过拷贝代码的方式给他,因为我不确定工具程序集里面是否有不能对外发布的内容,但如果是 SourceYard 的方法,作为源代码包可以将小伙伴需要的工具发布到 Nuget.org 请他去安装。

当然将工具放在一个工具程序集也不是没有优点,因为所有的工具都在一个程序集里面,小伙伴可以方便找到自己需要的类,而不是通过 Nuget 的方式去寻找安装。同时如果有一个项目多个程序集需要相同的工具,可以同时依赖工具程序集,减少创建出来的 dll 文件里重复代码。

解决上面的两个问题的方法是通过 SourceYard 的方法,使用 SourceYard 不但可以解决项目解耦创建了很多个项目让很多个项目编译出来的 dll 太多让软件启动性能降低,同时解决小工具类太多的问题,还可以解决代码兼容的问题。

d6f3ee7d4c71d26050d6c547f79758c1.png

控制台项目

创建一个 dotnet core 项目进行开发,这里创建一个 dotnet core 项目主要是因为创建出来的项目清真

假设有一个需求是做一个工具,这个工具的功能是用户输入数字,转换为

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值