无了个大语, 大家对 .net 的软件大小怎么看待

作为比较外行的人,我自己的观点是首先软件小一点好,方便下载安装,而且我办公用的老笔记本硬盘容量真的很小。至于什么.net软件,我不懂一个软件支持多个.net版本技术上行不行,我的想法是建议.net软件能支持多个常见的版本,让大部分人不用再额外安装。比如我用的win10 2019 ltsc好像自带.net 4.5,最近下载个软件,运行时提示要安装.net 4.8才行,我就懒得试了,直接卸载。

能不能接受安装依赖库要看是什么软件.
看图工具我不接受安装依赖,也不能接受50M以上的压缩包和300M以上的内存
目前在用honeyview,基本完全满意

1 个赞

一些类似的开源库我都尝试过
还有类似SkiaSharp 之类
仅仅就浏览图片来说好像没啥用,它们大部分的功能是处理图片.
这不是我个重点
另外wpf的图片格式比较特殊,虽然没详细理解,但粗略看过,它得转成directx支持的类型…
而大部分库要么对此不支持,要么支持的很粗略,
总的比下来还不如用net自带的

系统自带就能支持 jpg,png,bmp,tiff,ico
再加个 gif 和webp的外部库对我来说就够用了了(加起来不到1mb)

上面说到wpf的图片格式比较特殊,我甚至尝试过用winform,让它不那么特殊
加载速度快了很多,但过程有一些问题难以接受
处理起来会更加困难

搜索过github c# image viewer
大部分选择的都是wpf,也能让我抄一抄.

双向选择嘛,很正常.
面向通用用户的肯定会考虑这一点
我目前还处于自用的前提下能分享就分享的情况

honeyview 大部分情况都很好
我仅仅是有特殊需求
比方说获取当前图片的路径,以配合ahk等工具实现其他需求

另外它的占用也是能大起来的…

如图就是打开我上面反复发过的图片
大小 60MB左右
然后改一下浏览模式 (适合宽度或者源大小)
占用一下子就会像上面一样上去了
当然这是它的优点
它会在适合当前浏览情况下按需加载文件
我这也有类似的实现
但没它那么细分.

我给你一个建议,你先不要考虑这些东西,只要你东西做得好,就算一个看图软件,1GB大小,也会有人愿意用。

.NET Framework 是后向兼容的,装了 4.8 就可以卸掉 4.5 了(似乎会直接覆盖,记不清了)。实际上 .NET 4 对跨大版本的 .NET 3 和 .NET 2 也是兼容的,不过程序不作声明的话似乎不会这么做。

45M超大长图按屏幕宽度显示。
我也是第一次发现可以占用这么大内存,毕竟我一般看的长图没有这么长,也没有太在意内存。
总的来说honeyview在看图方面是满足我的需求的(便携,快速,迅速切换显示模式、缩放算法、全屏和窗口、长图滚动显示、开关exif信息),每个软件现有用户都有软件吸引用户的方面。

说起来,我从.net4.5换到5的时候,内存占用直接翻倍,搞不懂

我的播放器用的.NET4.6.1给你们一个参考

Honeyview 也有 jpegview类似的问题
连续浏览大图时切换有很重的滞后感

如果你用Honeyview 加载某些图片时会出现马赛克变清晰的情况
你可以把此图片复制个10来张,然后重新打开来体会一下我说的滞后感的问题…

这大概是它们出于通用需求,性能等方面的综合考量
没遇到前我用jpegview也用的好好的

但近年来福利姬内卷,图包分辨率,大小大幅升级
这种滞后感就让我越来越难受
所以才有了此方法

其实很简单的解决方法,预读就是,就是上面说的以内存换取速度
但通用软件可能出于我上面说的考量
它们预读的数量不会太多,在这种情况下就会频繁遇到这种情况

我遇到唯一一个能大幅预读的是 NeeView
https://bitbucket.org/neelabo/neeview/wiki/Home

这是个漫画软件
我甚至花了一段时间弄脚本以企图让它充当图片浏览器
但它实在太重了
启动速度,加载速度都难以忍受(浏览速度很优秀)
最后还是决定自己开搞.

5已经被微软废弃了. 4直接到6比较好.

难怪6出这么快,5就是个试验品

net6化后最可惜的软件是ScreenToGif,以前软件大小才2-3m
改net6后的前1-2个版本是16-20m,感觉还能接受
但是马上就直接暴增到160-180m
感觉作者思想出了大问题

这种明显就是为了更新.NET版本而更新,完全没有意义,功能是一样的,
如果可以,我甚至愿意我的软件版本停留在.NET2.0,只是其它的库也不允许了。

感谢指点。这样的话我倒是觉得微软应该把.net版本升级放在Windows update里,省得装个软件还要单独装新版.net

dotnet主要问题是只能往系统安装一个运行库。如果像很多java程序那样,可以自带一个jre节省用户安装运行库的时间,也可以直接调用系统jre节省磁盘空间,抱怨的人会少很多吧

.NET Fx 的更新就是放在 update 里的,只不过次要版本只会随着系统更新,只有修补版本才会直接更新。Windows 10 1901 后的所有 Windows 预装的都是 4.8,LTSC 是面向企业的,可能是为了稳定才用了旧版。

现在不就是这样吗?题主抱怨的就是自带运行时后的体积太大。

.NET 和 JRE 的主要区别是 .NET 没有后向兼容的保证,每个用到的大版本都需要安装(虽然理论上也能强制用不同版本),JRE 虽然兼容性并不完美,但大部分程序是能用最新 JRE 直接运行的。.NET 这么做的目的是为了摆脱 Framework 时代沉重的兼容性包袱,可以随意改 API,对于企业没什么,对于个人用户确实有点不便,虽然大部分程序升级 .NET 不过是升级下 VS 再改下版本号,但个人开发者的软件很容易终止开发,造成版本碎片化。

打包体积的问题其实也有一些缓解方法,比如 AOT 减小打包体积,或者用 MSIX 这种支持不同软件包自动共享重复文件的包格式,但都有各自的局限性。

我也无法接受一个看图软件有这么大的体积。。。如果自己不会底层,全用别人的轮子的话会有这么大的体积也是在所难免的,,这样的缺点也很明显,一是体积巨大,二是效率低下

另外你打算放弃的设置界面,快捷键自定义 应该不会增加很大体积了吧。。。这个倒没有必要因噎废食