一个项目, 非要拆成好几个项目, 恨不得一个 class 对应一个 dll 文件, 刷爆 nuget 排名
说的就是你, serilog, asyncex.
一个简单的工具类 tools, string 相关的起一个项目, int 相关的起一个项目, long 相关的起一个项目, 然后一股脑上传到 nuget 上面, 你想引入 tools, 瞬间就给你带入 toos.string, , tools.long, tools.double, tools.float, tools.bool, tools.common, tools.context.
总之一句话, 不用 dll 文件把你的 publish 文件夹塞爆绝不罢休.
它明明可以用一个 30kb 的 tools.dll, 它不, 它非要拆成 10 个 3kb 的 dll
如果依赖的三方库稍微多一点, 那最后发布文件夹简直就跟 node_modules 一样臃肿.
我觉着再这么下去, 总有一天发布文件夹内的文件会成千上万甚至几十万.
![]() | 1 deali 2023-11-09 21:02:15 +08:00 ![]() 发布可以设置打包成单文件啊。 加个 PublishSingleFile 参数就行了 |
2 jjx 2023-11-09 22:16:29 +08:00 根源还是来自 java 的思维吧 |
3 thinkershare 2023-11-09 23:03:01 +08:00 不知道你在吐槽啥,.NET 原本的大型程序集 Assembly 本来就太大了,基本也没多少人使用 Module 模块。 我是希望尽量减小 dll 的体积,一个服务,几千个 dll 完全可以接受。 另外完全可以实现一份源代码发布多个包,一个大型的包包括所有子模块,各个子模块也可以发布独立的包。 我极度讨厌依赖大量我不需要的东西,至于文件你看着烦躁,完全可以自己打包到一个单文件里面。 |
4 stinkytofu 2023-11-09 23:33:50 +08:00 虽然我没有开发过.net, 但是这样这不挺好的么, 只用 double 不用 float 的话, 不就省了 3kb 么. 这样还挺简洁明了的 |
![]() | 5 netabare 2023-11-10 00:12:32 +08:00 via iPhone ![]() dll 太大了 Unity 那边编译时间直线上升,编译一下都能跟同事出去吃顿饭回来发现还没编译完。 dll 小一点可以选择加载更少的依赖,这不挺好? |
![]() | 6 opentrade 2023-11-10 00:29:05 +08:00 怎么做都是有人吐槽的 |
7 gux928 2023-11-10 07:10:48 +08:00 via iPhone 我之前开发 wpf 的就想问,怎么把这些 dll 集中到一个文件夹里。主目录下就一个 exe 或者再来个配置文件。其他都在子目录下。 多一点不要紧,就是看起来太乱。 |
![]() | 8 ktqFDx9m2Bvfq3y4 2023-11-10 07:17:50 +08:00 via iPhone 作为一个.net 全端,npm 那套才是更可恶的。 |
10 nodejsexpress 2023-11-10 08:34:32 +08:00 我觉得分拆了 才能让体积更小。不然什么都往一个文件里面堆,不相关的依赖引进来。 就是不知道为啥这个 node_module 文件夹会这么大。。 |
11 bthulu OP @stinkytofu 有你想的这么简单就好了. 你以为的是只用 double 不用 float 的话, 就只引用 double 就行了. 事实却是 double 又依赖了 common, context 等等. 这样我重新部署的时候, 很难看出来到底多了几个 dll. 对于一般人来说, 这或许也没啥, 把 dll 一股脑全复制过去覆盖掉旧的就行了. 但是我这边很多项目是通过 todesk 部署在国外客户的工厂里的台式机里面. 这种跨国网速是很慢的, 比不得跨国云厂商, 两边都是家用带宽, 只有个几 kb 的传输速率. 把 dll 全部甚至过去替换的方案几乎是不可行的. 只能是挑一挑多了哪几个 dll, 压缩成一个文件复制过去. 这种情况下我就希望 NUGET 上引入一个库, 就只引入一个 dll, 不然找起来实在费劲. |
![]() | 12 clorischan 2023-11-10 08:47:40 +08:00 via Android 发布可以生成单文件 |
![]() | 16 wanguorui123 2023-11-10 10:20:57 +08:00 拆分了编译速度会变快 |
![]() | 17 wu67 2023-11-10 10:58:59 +08:00 这是 Java boy 的思路, 别黑 JS boy 呀, 那些瞎开文件一堆零零碎碎的, 几乎都是从 Java boy 那抄过来的, 我是前端看了也想骂人, 还有那些浓浓 Java 味道的 js 代码, 真是一言难尽 |
![]() | 18 xingheng 2023-11-10 11:23:50 +08:00 @netabare #5 dll 是 windows 下的动态库吧,应该不会参与编译,直接链接就好了。(很多年不做 windows 开发了) |
19 jones2000 2023-11-10 13:22:08 +08:00 关键是导入库没有成本, 如果都是收费库,就不可能出现了。 |
22 forgottencoast 2023-11-11 21:11:08 +08:00 你需要的是一个好的发布工具,可以轻松解决你的烦恼。 回到主题,.Net Core 之前是没有这样做的。 最近这几年才有这样的趋势,这么做是为了降低启动内存,增加启动速度。 虽然 dll 的总字节数是一样,但是你的应用程序可能不会(至少不会一次性)需要把所有的 dll 加载进内存。 这就达到了降低内存使用(或者启动内存)的目的。 |