跳到主要内容

为什么需要 LeanCLR

背景:嵌入 C# 到宿主

许多产品需要在 C++ / 原生引擎中运行 C# 逻辑,并将同一份代码发布到多个平台。常见路径包括 CoreCLR、Mono、IL2CPP,但在「轻量嵌入 + 多平台发布」这一组合目标下,它们往往存在明显代价。

与 CoreCLR / Mono 的对比

维度CoreCLR / MonoLeanCLR
运行时体积较大极小(x64/WASM 上单线程版本可至数百 KB 级)
外部依赖以 C++ 静态库为主,宿主集成简单
嵌入成本高,裁剪与移植复杂低,接近嵌入脚本引擎
典型用途桌面/服务器完整 .NET发布管线中的嵌入式 CLR

CoreCLR 与 Mono 能力完整,适合作为通用 .NET 运行时;但当目标是「把一小段 C# 打进游戏或嵌入式固件」时,它们的体积、依赖与集成复杂度往往过高。

与 IL2CPP 的对比

维度IL2CPPLeanCLR
开源是(MIT)
引擎绑定强依赖 Unity 工具链可独立嵌入,亦有 Unity 插件
执行模型仅 AOTAOT + 解释器混合
ECMA-335 覆盖受 Unity 裁剪与工具链约束以高 ECMA-335 兼容为设计目标
跨引擎是(Unity 已支持,Godot / UE / Cocos 规划中)

IL2CPP 在 Unity 生态中成熟,但闭源、与 Unity 强绑定,且对 ECMA-335 的覆盖有限。LeanCLR 旨在提供可独立集成的开源替代方案。

LeanCLR 的定位

LeanCLR 补足的是:在保持高 ECMA-335 兼容的前提下,提供易集成、体积可控、可跨引擎嵌入的发布期 CLR

它不与 HybridCLR 等热更新方案竞争——后者解决的是 Unity 全平台原生热更新;LeanCLR 解决的是发布时替换后端、缩小包体、降低内存