一个项目, 非要拆成好几个项目, 恨不得一个 class 对应一个 dll 文件, 刷爆 nuget 排名
说的就是你, serilog, asyncex.
一个简单的工具类 tools, string 相关的起一个项目, int 相关的起一个项目, long 相关的起一个项目, 然后一股脑上传到 nuget 上面, 你想引入 tools, 瞬间就给你带入 toos.string, tools.int, 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 1
发布可以设置打包成单文件啊。 加个 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 1
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 或者再来个配置文件。其他都在子目录下。
多一点不要紧,就是看起来太乱。😵💫 |
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 加载进内存。 这就达到了降低内存使用(或者启动内存)的目的。 |