命令行工具
dotnet/runtime avatar
dotnet/runtime

dotnet/runtime:一个仓库装下整个 .NET 的代价与收益

.NET 是适用于云、移动、桌面和 IoT 应用程序的跨平台运行时。

18,274 个 Star5,598 个 ForkC#MIT

秒懂

它是什么?
dotnet/runtime 是 .NET 运行时、类库和共享主机的统一代码仓库,覆盖云、移动、桌面和 IoT。本文拆解它的仓库结构、构建流程、贡献方式,以及它在版本维护和安全性上的真实权衡。
适合谁用?
dotnet/runtime 适合需要从源码构建 .NET、参与运行时或类库开发、或者想追踪每日构建的工程师。不适合只想用 .NET 写应用的人,那应该走官方安装包。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 C#(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

这个仓库解决什么问题

dotnet/runtime 是 .NET 的核心代码库,包含运行时、类库和共享主机(dotnet muxer)的源码。它解决的问题是:让 .NET 能跨平台运行,覆盖云、移动、桌面和 IoT 场景。仓库的 README 明确列出了构建产物,包括所有支持平台的安装器。这个仓库面向的是两类人,一类是想要从源码构建 .NET 的开发者,另一类是打算贡献代码的人。普通应用开发者通常不需要碰这里,直接用官方安装包就行。

仓库里有什么:运行时、库和主机的边界

仓库内容分三块。第一块是运行时本身,包括垃圾回收、JIT、类型系统这些底层机制。第二块是类库,也就是开发者日常调用的 API,从集合到文件 I/O 都在这里。第三块是 dotnet 命令,README 称它为 muxer,负责启动应用和管理安装的运行时版本。这三块放在同一个仓库里,好处是版本同步容易,坏处是仓库体积大、构建复杂。如果你只想改一个 API 的行为,你仍然要面对完整的构建流程。

从源码构建:文档说了什么

README 指向 docs/workflow/README.md 来解释如何构建和测试。它没有给出具体命令,但说明了工作流文档的位置。另一个关键文档是 docs/project/dogfooding.md,它解释了如何获取 nightly builds,也就是每日构建的运行时和库,用来在自己的项目里测试。这意味着你可以不自己编译,而是直接下载当天的构建产物。这对想提前验证新 API 的人很有用,但 nightly build 不稳定,不适合生产环境。

贡献的入口和门槛

贡献流程写在 CONTRIBUTING.md 里,README 说明它解释了欢迎哪些类型的贡献。仓库还维护了 help wanted 和 good first issue 标签,方便新手找任务。但贡献 .NET 运行时不是改个字符串那么简单,你需要先按工作流文档搭建构建环境,可能还要理解 JIT 或 GC 的内部。文档还提到 dogfooding,建议贡献者在自己的项目里先用 nightly build 验证改动,这比直接提交 PR 更稳妥。

安全报告:私有通道是唯一选择

README 对安全问题有明确要求:必须通过 MSRC Researcher Portal 私下报告,而不是提交公开 issue。它承诺 24 小时内响应。这条规则是硬性的,因为运行时漏洞影响面太大,公开披露会危及所有 .NET 应用。另外,微软有 .NET 漏洞奖励计划,说明安全问题被认真对待。如果你发现了疑似漏洞,走公开渠道是错误做法,可能被忽略甚至引发法律风险。

维护与升级成本:版本节奏和长期支持

仓库最近的发布记录显示三个版本线并行:v10.0.11、v9.0.19 和 v8.0.30,发布日期都是同一天。这说明 .NET 采用多版本同时维护的策略,每个版本有各自的补丁周期。对采用者来说,这意味着升级不是一次性工作,而是要跟随你选择的版本线持续接收补丁。仓库本身由 .NET Foundation 管理,采用 Contributor Covenant 行为准则。许可证是 MIT,这是最宽松的开源许可之一,商用和修改都没有障碍,但你不应该从 README 推断法律建议。

替代方案和它的差异

如果你不想从源码构建,官方安装包是直接替代方案。dotnet.microsoft.com 提供下载,安装后就能用。区别在于,安装包是预编译的二进制,省去了构建时间,但你不能修改运行时内部。另一个替代是 Mono,它是 .NET 的独立实现,但 dotnet/runtime 仓库本身不包含 Mono 的源码。Mono 的架构更老,主要面向移动平台,而 dotnet/runtime 是统一代码库。选择取决于你是否需要定制运行时,如果只是写应用,安装包足够。

编辑结论

dotnet/runtime 适合需要从源码构建 .NET、参与运行时或类库开发、或者想追踪每日构建的工程师。不适合只想用 .NET 写应用的人,那应该走官方安装包。采用前先确认你的目标平台在支持列表内,并检查 dogfooding 文档中 nightly build 的获取方式。安全问题是硬边界,必须走 MSRC 私有渠道,公开 issue 只用于非安全缺陷。这个仓库的维护成本不低,构建整个运行时需要遵循 docs/workflow 的详细步骤,但 MIT 许可证和 .NET Foundation 的治理让它成为少数能完整自托管的跨平台运行时之一。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记