最近把开源项目重构并从 NET Framework 4.8 升级到了 .NET6 ,开发体验良好。尤其是发布 exe 的时候很轻松。
EXE 发布
原本 NET Framework 4.8 发布 Exe 包的时候,需要打包一系列的 dll 文件
如图,.NET6 可以打包为一个 10MB 的单 exe 应用,非常方便 portable 版本的发布:

MSIX 发布
不过今天尝试发布为 msix 并更新到 Microsoft Store ,就遭到了背刺 :(
如下图,NT48 发布的包只需要 10 MB 左右,而 .NET6 发布的包则达到了惊人的 70 多 MB 。

我推测 .NET6 发布打包时默认以 self-contained 形式把 .NET6 运行时也打包到了应用里面。
现在搜索一圈也没找到怎么以 依赖框架 的形式发布 msix 包。
并且这个问题应该是从 NET CORE 时代一直延续至今的:
吐槽
虽然能理解“为了隔离各个应用,所以给每个应用都打包好自己的运行时”这种做法,但 .NET6 作为微软自家的运行时,居然也要被隔离,不知道过几年 Windows 要是预装了 .NET6 运行时,那么微软商店中的软件是否还需要自带一份运行时呢?
话说回来,反正用户不管怎么样都要下载 70MB 的安装包了,那我干嘛不用 Electron 写桌面应用,虽然用户用着慢,但写 UI 快啊
![]()
吐槽完了,求个 star https://github.com/1Remote/PRemoteM