用 .Net 写了一个跨平台的桌面端软件,且原生编译,无需运行时,启动快内存少体积小 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
liuliuliuliu
0D
V2EX    程序员

用 .Net 写了一个跨平台的桌面端软件,且原生编译,无需运行时,启动快内存少体积小

  •  
  •   liuliuliuliu
    PRO
    2023-06-29 10:07:55 +08:00 9229 次点击
    这是一个创建于 834 天前的主题,其中的信息可能已经有所发展或是发生改变。
    实验性的小东西,实时显示你今天赚了多少钱
    采用了 .Net 的技术,可以跨平台,并且利用 Native AOT 进行原生编译,无需运行时,启动快内存少体积小
    软件截图见 https://jihulab.com/nikenidage/DailyMoney/-/raw/main/screenshot_1.png

    下载放在了国内的 gitlab 上。macos 暂时不支持 m1 ,两个原因,.Net8 才支持 m1 还没正式发布,github 的 action 也不支持 m1
    https://jihulab.com/nikenidage/DailyMoney/-/releases
    源代码在 github
    https://github.com/nikenidage/DailyMoney

    这个框架理论上 android 和 ios 也支持,暂时没有研究
    53 条回复    2023-07-08 23:22:38 +08:00
    liuliuliuliu
        1
    liuliuliuliu  
    OP
    PRO
       2023-06-29 10:32:47 +08:00
    新人没有人权啊,没人回复
    Syiize
        2
    Syiize  
       2023-06-29 10:47:21 +08:00 via Android   1
    这个东西怎么记录赚的钱啊,自己设定每小时的钱数吗
    liuliuliuliu
        3
    liuliuliuliu  
    OP
    PRO
       2023-06-29 10:48:38 +08:00   1
    @Syiize 啊对对哈哈,软件功能不重要,主要是试验下技术
    towser
        4
    towser  
       2023-06-29 10:57:12 +08:00
    不知道 Avalonia 现在坑多不多
    lujiaxing
        5
    lujiaxing  
       2023-06-29 11:05:52 +08:00
    来支持一下 Windows 7.
    liuliuliuliu
        6
    liuliuliuliu  
    OP
    PRO
       2023-06-29 11:08:14 +08:00
    @lujiaxing 先不支持了太累了,记得是可以支持的,多加几个 dll
    xieren58
        7
    xieren58  
       2023-06-29 11:20:10 +08:00
    Avalonia 已经 11.rc 了啊... 你这个还没升级...
    idragonet
        8
    idragonet  
       2023-06-29 11:22:00 +08:00
    NET 7 支持跨平台的桌面端软件?
    Mithril
        9
    Mithril  
       2023-06-29 11:22:08 +08:00
    @towser 坑倒是不多,不过如果你想要做一个交互比较丰富的 App ,那要花很大精力去做各种控件。
    预算足够倒是没问题。
    Akuikkk
        10
    Akuikkk  
       2023-06-29 11:25:26 +08:00
    你这个截图,也看不出是什么啊,桌面悬浮吗?
    liuliuliuliu
        11
    liuliuliuliu  
    OP
    PRO
       2023-06-29 11:25:39 +08:00
    @idragonet 哈哈 不止 7 支持 5 6 就支持了,重点是现在可以原生编译
    liuliuliuliu
        12
    liuliuliuliu  
    OP
    PRO
       2023-06-29 11:26:02 +08:00
    @Akuikkk 对对 桌面悬浮
    x77
        13
    x77  
       2023-06-29 11:26:59 +08:00
    如果我不给另外一个平台折腾 .NET 运行环境,能跨吗?
    liuliuliuliu
        14
    liuliuliuliu  
    OP
    PRO
       2023-06-29 11:29:56 +08:00
    @x77 能跨啊,原生编译,编译到这个平台了,不需要.NET 运行环境了。
    ccyixia
        15
    ccyixia  
       2023-06-29 11:31:35 +08:00
    楼主你好,我对 .net 刚刚上手,"macos 暂时不支持 m1",这个我没搜到相关的啊,难道用.net 开发的 app 现在没法在 m1 上运行?还是只是 native AOT 没法用?
    html
        16
    html  
       2023-06-29 11:31:42 +08:00
    @nikenidage1 支持发布成单文件吗
    liuliuliuliu
        17
    liuliuliuliu  
    OP
    PRO
       2023-06-29 11:34:39 +08:00   1
    @ccyixia native aot 没法用,也就是没法原生编译到 m1 m2 的 cpu ,其他正常
    liuliuliuliu
        18
    liuliuliuliu  
    OP
    PRO
       2023-06-29 11:35:44 +08:00
    @html 支持的,.net 可以发布成单文件的,但是 native aot 后就不行了,有几个依赖的 dll ,也可能可以合并,没研究
    monkeyWie
        19
    monkeyWie  
       2023-06-29 11:39:50 +08:00
    我的评价是不如用 flutter ,flutter 写的桌面软件也是原生编译的,支持的平台更多,而且编译出来的体积也就 10 来兆
    xieren58
        20
    xieren58  
       2023-06-29 11:43:44 +08:00
    flutter 桌面 bug 一大堆...
    GlobalNPC
        21
    GlobalNPC  
       2023-06-29 11:45:46 +08:00
    微软不可靠,说不定啥时候就放弃或者出一个新的不兼容的版本
    liuliuliuliu
        22
    liuliuliuliu  
    OP
    PRO
       2023-06-29 11:49:47 +08:00
    @infun 这个没必要为了黑而黑哈,而且这框架不是微软的,社区的,https://avaloniaui.net/
    x77
        23
    x77  
       2023-06-29 11:52:57 +08:00
    要不楼主也看看 Flutter ,相较于 .NET 优势很明显

    - 加载迅速,底层直接跑 Win32 ,人家在底层实现上做了不少工作,没有依赖 .NET ,真货(不是包皮货)。而 .NET ,我都不知道微软怎么想的,Windows 内置的一些工具加载都要几十秒,甚至要 1 分钟。

    - 硬件加速支持,在些情况下 Flutter Windows 上可以走 GPU 渲染,虽然这个不完善,但是人家设计上有这个大局观。

    - 框架支持主题、颜色模式,长得漂亮。.NET Windows 11 年代了开发的 App 默认还是 WinXP 时代的样貌。
    tensorzhang
        24
    tensorzhang  
       2023-06-29 11:56:03 +08:00
    和 UNO 对比的话,哪个更好一点?
    tensorzhang
        25
    tensorzhang  
       2023-06-29 11:56:33 +08:00
    @tensorzhang https://platform.uno/
    apostleChan
        26
    apostleChan  
       2023-06-29 11:57:23 +08:00 via Android
    maui 开发的吗
    liuliuliuliu
        27
    liuliuliuliu  
    OP
    PRO
       2023-06-29 11:58:35 +08:00
    @x77 你说这个几个优势大家都一样的啊。。。原生编译后就不依赖.NET 了,硬件加速和主题,这大家都一样
    @tensorzhang 这个不了解啊哈哈,我只是找一个看起来大一点的,毕竟这个 avalonia jetbrains 的 rider 默认支持
    GiantHard
        28
    GiantHard  
       2023-06-29 12:02:40 +08:00
    Linux Wayland hidpi 缩放有问题,没有跟随系统设置缩放。

    liuliuliuliu
        29
    liuliuliuliu  
    OP
    PRO
       2023-06-29 12:04:32 +08:00
    @GiantHard 谢谢谢谢,我还真没测试 linux……也没注意 hidpi 的问题,有可能其他平台也有
    GiantHard
        30
    GiantHard  
       2023-06-29 12:05:06 +08:00
    另外, 还不支持在输入框使用 fcitx5 输入法
    roundgis
        31
    roundgis  
       2023-06-29 12:09:34 +08:00 via Android
    @infun 不是微做的
    lujiaxing
        32
    lujiaxing  
       2023-06-29 12:25:48 +08:00
    @infun 这不是微软做的

    而且类似的还有 uno 项目. 同样不是微软做的.
    elechi
        33
    elechi  
       2023-06-29 13:42:23 +08:00
    avalonia 发展还是比较慢
    xieren58
        34
    xieren58  
       2023-06-29 15:22:48 +08:00
    @elechi 下个月 11 正式出来...
    aiqinxuancai
        35
    aiqinxuancai  
       2023-06-29 15:47:03 +08:00
    微软脑子有坑,到现在 UI 跨个平台还要用第三方,这么多年就一个 WPF 能打,还不能跨平台,新出个 MAUI 连自家 Win7 都用不了
    jstony
        36
    jstony  
       2023-06-29 16:00:54 +08:00
    @aiqinxuancai win7 支持周期早都结束了,为啥要支持。
    yazinnnn
        37
    yazinnnn  
       2023-06-29 16:19:53 +08:00
    话说.net8 对 fsharp 项目的 aot 支持程度如何了?
    idealhs
        38
    idealhs  
       2023-06-29 16:56:05 +08:00
    相对于阿瓦隆尼亚,我更看好 MAUI
    aiqinxuancai
        39
    aiqinxuancai  
       2023-06-29 18:22:34 +08:00
    @jstony 你问问微软他新出的 edge 为啥要支持 win7
    wxf666
        40
    wxf666  
       2023-06-29 18:44:10 +08:00
    27 MB ,快赶上 QT 了。。

    另外,占用 100 MB 内存,快赶上 Electron 应用了。。
    liuliuliuliu
        41
    liuliuliuliu  
    OP
    PRO
       2023-06-29 19:08:15 +08:00
    @wxf666 哈哈,内存的问题,可能是我技术不到位,又或者是这个 ui 框架的锅,真实情况可以参见这位大佬的文章,其中提到
    “将自己的可视化通用旅行商问题解算器应用使用 NativeAOT 编译后得到了一个 40mb 大小的应用程序(无需运行时),可以瞬间启动且运行时内存占用不到 20mb”
    “左侧是一个包含接近 70 万个节点的折线图,可以 60 fps 的体验(其实可以更高,但对于桌面 GUI 应用来说 60 fps 渲染是一个默认的设定)随意滑动、缩放和跟踪点,完全不带一点卡顿”

    https://zhuanlan.zhihu.com/p/353853076
    wxf666
        42
    wxf666  
       2023-06-29 19:28:06 +08:00
    @nikenidage1 #41 有可执行文件体验吗?

    那个折线图是定制过的吗?

    可以 70 万个子窗体、列表框子项之类的吗?
    beginor
        43
    beginor  
       2023-06-30 08:36:55 +08:00 via Android
    avalonia 确实不错,.net 跨平台开发利器, 自己做一些小东西还是不错的。

    不过就是没有什么第三方资源, 比如控件库之类的,因为本身就是个第三方库。

    支持 mac m1 , 著名的 ryujinx 模拟器就是 Ava 开发的界面。
    itianjing
        44
    itianjing  
       2023-06-30 08:48:50 +08:00
    定睛一看,钱咋越走越少呢,惊出一身冷汗,原来我在付费打工。
    再仔细一看,金额是负数,那就还算是往上涨的。
    可是问题来了,打了十几分钟工为啥还赚了负数的钱呢。
    liuliuliuliu
        45
    liuliuliuliu  
    OP
    PRO
       2023-06-30 10:20:42 +08:00
    @itianjing 啊哈哈 可能有 bug ,这不重要
    @wxf666 好像没有,大佬没提供
    FakerLeung
        46
    FakerLeung  
       2023-06-30 11:00:33 +08:00
    摸鱼才叫赚钱。
    上班那叫赔偿。

    ( doge
    kingsword09
        47
    kingsword09  
       2023-07-01 09:24:07 +08:00
    楼主,.net 新手,请问 Native AOT 编译有相关教程吗?是要求 .net 8 ,还是现在 .net 7 就可以开启了?
    liuliuliuliu
        48
    liuliuliuliu  
    OP
    PRO
       2023-07-01 13:22:03 +08:00
    flytsuki
        49
    flytsuki  
       2023-07-05 08:55:57 +08:00
    我写.net 好几年一直不习惯 xaml ,写 Android 一直用的 flutter 。。。
    iorilu
        50
    iorilu  
       2023-07-07 16:11:27 +08:00
    学习下, 跨平台桌面软件还是有潜力得
    hez2010
        51
    hez2010  
       2023-07-08 12:49:34 +08:00   4
    @nikenidage1 Avalonia 11 的内存占用稍微大了一些其实是因为启用了新的 GPU 加速的合成渲染器,这个渲染器性能很好但是有一定的内存占用,虽然这部分内存占用其实不来自 Avalonia ,而是来自 ANGLE (一个 OpenGL ES 库)。
    如果想要回归到原来的那种软件渲染可以在你的 Program.cs 的 BuildAvaloniaApp 函数里面加

    ```csharp
    .With(new Win32PlatformOptions
    {
    RenderingMode = new[] { Win32RenderingMode.Software }
    })
    ```

    内存占用立即降到只有 30mb 左右。
    liuliuliuliu
        52
    liuliuliuliu  
    OP
    PRO
       2023-07-08 17:46:11 +08:00
    @hez2010 卧槽,厉害了大佬。请教这些知识哪里可以获得啊? avalonia 的官网似乎没看到?
    hez2010
        53
    hez2010  
       2023-07-08 23:22:38 +08:00
    @nikenidage1 Avalonia 官网确实没写。我姑且算是 Avalonia 项目的代码贡献者之一所以有了解到这些东西。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3508 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 10:29 PVG 18:29 LAX 03:29 JFK 06:29
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86