网易首页 > 网易号 > 正文 申请入驻

Rx.NET 7.0 拆分 Windows UI 支持,大幅缩减应用部署体积

0
分享至


作者 | Edin Kapić

译者 | 马可薇

Rx.NET 7.0 现已 发布。这一版本的改动重点明确,主要是为缩小 Windows 应用的部署体积。新版本将 WPF、Windows Forms、UWP 和 Windows Runtime 集成功能从核心System.Reactive包中拆分出去,避免自包含应用在明明用不到这些框架的情况下,仍然被带入几十 MB 的框架依赖。

Reactive Extensions for .NET 提供了基于IObservable 的编程模型,以及用于组合异步和事件驱动数据流的一系列操作符。自从 2023 年 1 月英国公司 endjin 接手 Rx.NET 的维护工作,此后的几个版本主要集中在 现代化改造和清理长期积累的技术债务,而不是继续大规模增加操作符。Rx.NET 7.0 延续了这一思路,新版本的核心功能改动基本就这一项。

问题主要出现在同时使用自包含部署或 Native AOT,以及 Windows 特定 TFM(Target Framework Moniker,目标框架名字)的应用中,例如net8.0-windows10.0.19041。引用System.Reactive后,即使应用完全没有使用 WPF 或 Windows Forms,也可能导致完整的 WPF 和 Windows Forms 框架被打包进最终部署产物。根据 endjin 的说明,不启用裁剪时,这可能额外增加约 90 MB;启用裁剪后仍会增加约 47 MB;如果使用 Native AOT 构建,额外体积约为 11 MB。

Rx.NET 7.0 通过将 UI 相关功能拆分到独立的 NuGet 包中解决了这个问题,分别是System.Reactive.Windows.FormsSystem.Reactive.WpfSystem.Reactive.WindowsRuntimeSystem.Reactive.Uwp。升级后,如果应用确实用到了这些集成能力,就需要显式添加对应的 NuGet 包。对于没有使用这些功能的项目,则无需修改源代码,而受影响的自包含部署则可以明显瘦身。

维护团队也尽量保证了拆包之后的二进制兼容性。旧版 UI API 仍然保留在 NuGet 包提供的运行时程序集(runtime assemblies)中,只是从引用程序集(reference assemblies)里移除了。这样一来,使用 Rx.NET 6.1 编译好的组件理论上仍然可以继续运行;而重新编译的应用则无法在没有添加对应包的情况下,不知不觉依赖 Windows UI 功能。System.Reactive7.0 还加入了一个 Analyzer,可以检测受影响的源代码,并提示需要添加哪个包。

当然,这一版本也带来了一些破坏性变更。Rx.NET 7.0 不再支持 .NET 6 和 .NET 7,但继续支持 .NET 8、.NET 9、.NET 10、.NET Framework 4.7.2、.NET Standard 2.0 和 UWP。此外,该版本还修正了OfType的可空性标注(nullability annotations)。运行时行为并没有变化,但由于方法签名发生了变化,按照语义化版本(Semantic Versioning)的规则,这项改动在技术上也需要提升主版本号。

对于仍在使用旧式packages.config机制的项目,还存在一个特殊情况。由于这种格式无法区分 NuGet 的reflib资产,这类项目即使没有显式引用新的 UI 包,仍然可能看到这些 UI API。Rx.NET 维护团队并不支持这种配置,并表示未来可能会移除为兼容这一机制而保留的代码。

此前 Rx.NET 用户的 讨论 已经提到过 Windows 特定的打包问题,以及项目是否能够跟上现代 .NET 部署模型的问题。有开发者反映,在某些目标框架组合下,他们不得不自行绕过缺失的 Windows Scheduler API;也有人希望 Rx.NET 能进一步改善裁剪、AOT 支持以及包文档。目前 7.0 发布后的公开讨论还比较有限,因此现在判断社区对这一版本的整体反响还为时过早。

随着 7.0 发布,endjin 表示,接手 Rx.NET 维护工作时制定的路线图主要目标已经完成。后续工作可能会转向进一步减少内存分配、引入代码生成、探索对类似ref元素的支持,以及增加更多操作符。System.Reactive7.0 已经可以通过 NuGet 获取;有关此次拆包设计以及后续开发计划的细节,则可以在 Rx.NET GitHub 仓库 中查看。

查看英文原文:

Rx.NET 7.0 Reduces Deployment Size by Splitting Windows UI Support (https://www.infoq.com/news/2026/08/rx-net-7/)

声明:本文由 InfoQ 翻译,未经许可禁止转载。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
李念带大女儿小儿子亮相,二儿子迟迟不露面,三个孩子都像丈夫

李念带大女儿小儿子亮相,二儿子迟迟不露面,三个孩子都像丈夫

情感大头说说
2026-09-04 07:44:47
美国首部针对VPN的法律,为何可能改变你的上网方式?

美国首部针对VPN的法律,为何可能改变你的上网方式?

爬虫饲养员
2026-09-04 00:10:53
坐滩舰快撑不住了?菲方放狠话拒拖船,中国海警一招断了菲方妄想

坐滩舰快撑不住了?菲方放狠话拒拖船,中国海警一招断了菲方妄想

史说烟雨
2026-09-03 16:33:12
存款别贪多,70岁以后达到这三个数额,家庭已然幸福

存款别贪多,70岁以后达到这三个数额,家庭已然幸福

你在偷看谁
2026-08-21 21:51:40
回顾:上海杀妻案朱晓东被处死刑,狱中对妻子的评价,让人胆寒

回顾:上海杀妻案朱晓东被处死刑,狱中对妻子的评价,让人胆寒

墨策讲历史
2026-09-04 17:15:28
这 4 大岗位将被移出事业编!

这 4 大岗位将被移出事业编!

职场资深秘书
2026-09-03 19:49:02
泽连斯基宣布,乌开始封锁俄领空!话音落下,中方指出唯一出路

泽连斯基宣布,乌开始封锁俄领空!话音落下,中方指出唯一出路

影孖看世界
2026-09-03 23:06:10
“蒋介石的日记不能信?”研究者说:谁会在私人日记里骂遍所有人,只为了骗后人?

“蒋介石的日记不能信?”研究者说:谁会在私人日记里骂遍所有人,只为了骗后人?

苏格拉高
2026-09-03 07:41:51
黄磊首度回应“做饭难吃,豆角没熟”梗,并谈及不再录制《向往的生活》

黄磊首度回应“做饭难吃,豆角没熟”梗,并谈及不再录制《向往的生活》

天津美食全搜罗
2026-09-04 07:04:20
计算机专业,终于要走下神坛了。

计算机专业,终于要走下神坛了。

纯洁的微笑
2026-09-04 12:37:15
19岁女孩被亲生父亲一周强奸4次,报警后母亲竟让她去撤案

19岁女孩被亲生父亲一周强奸4次,报警后母亲竟让她去撤案

胖胖侃咖
2025-05-28 08:00:16
农村红白喜事的账房先生,有三条死规矩,再熟也不能破!是哪三条?你知道吗?

农村红白喜事的账房先生,有三条死规矩,再熟也不能破!是哪三条?你知道吗?

农夫也疯狂
2026-09-02 10:58:46
中国乒协公开发文,正式公布孙颖莎重要决定,她终于迈出了这一步

中国乒协公开发文,正式公布孙颖莎重要决定,她终于迈出了这一步

哄动一时啊
2026-09-04 10:04:07
如果我是成都蓉城,以替补迎战河南队,与天津津门虎用全主力阵容

如果我是成都蓉城,以替补迎战河南队,与天津津门虎用全主力阵容

足球分析员
2026-09-04 11:00:08
大唐8月卖11010辆,远不达预期,于是比亚迪拿海狮08“献祭”?

大唐8月卖11010辆,远不达预期,于是比亚迪拿海狮08“献祭”?

三农老历
2026-09-04 13:45:49
商业头条No.142 | 追觅造车始末:一场无法量产的狂欢

商业头条No.142 | 追觅造车始末:一场无法量产的狂欢

界面新闻
2026-09-04 16:25:03
梦碎的王子,回家了

梦碎的王子,回家了

中国新闻周刊
2026-09-04 07:31:06
赖清德,或将成为新中国历史上,首位在任遭变故的台湾地区领导人

赖清德,或将成为新中国历史上,首位在任遭变故的台湾地区领导人

经纬戎韬
2026-09-01 01:45:47
“卫衣”下面不要老搭紧身裤、运动裤,换成这3种穿搭,慵懒高级

“卫衣”下面不要老搭紧身裤、运动裤,换成这3种穿搭,慵懒高级

时尚穿搭生活馆
2026-09-04 18:41:36
普京谈是否打击英国军事目标

普京谈是否打击英国军事目标

参考消息
2026-09-02 14:16:13
2026-09-04 20:31:00
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
12897文章数 52052关注度
往期回顾 全部

科技要闻

OpenAI深夜王炸!GPT-6 Astra来了

头条要闻

男子被诊断"胃癌"切除整个胃 化验结果却显示没癌细胞

头条要闻

男子被诊断"胃癌"切除整个胃 化验结果却显示没癌细胞

体育要闻

小卡来去10首轮,快船7年彩礼一场空

娱乐要闻

古天乐公司欠债1.49亿

财经要闻

姚洋:刺激消费要守住两个“大西瓜”

汽车要闻

小米与中创新航、欣旺达动力达成战略合作

态度原创

时尚
亲子
本地
健康
军事航空

夏天上衣不要只穿黑色或白色,试试这几件彩色T恤,亮眼又减龄

亲子要闻

工程车小故事:毛毛的饼干去哪了

本地新闻

扒完小作文,富豪们私藏的度假胜地有多绝

脑梗取栓成功≠活下来,还有这三关

军事要闻

美国最年轻的陆军部长越级告了防长的状

无障碍浏览 进入关怀版