news 2026/9/9 17:53:12

从0到1跑通 .NET Runtime:环境、目录、构建与排错的完整任务流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从0到1跑通 .NET Runtime:环境、目录、构建与排错的完整任务流

从0到1跑通 .NET Runtime:环境、目录、构建与排错的完整任务流

【免费下载链接】runtime.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.项目地址: https://gitcode.com/GitHub_Trending/runtime6/runtime

.NET runtime 是微软开源的跨平台 .NET 运行时仓库,一套代码同时覆盖云端、桌面、移动端和 IoT 场景。仓库由三大块组成:CoreCLR 与 Mono 两个运行时实现、BCL 类库,以及负责启动应用的 host 与安装器。这篇文章按你从克隆仓库到跑通首次构建的真实顺序展开,先备好环境和 SDK,再理解目录和组件划分,最后把新手最容易踩的报错一次讲清,适合第一次接触 .NET 运行时源码的同学。

备齐平台依赖与构建 SDK

这个仓库支持在 Windows、Linux、macOS、FreeBSD 上构建,但不是所有芯片组合都支持。先对照下表确认你的开发机在矩阵内,再装依赖:

芯片WindowsLinuxmacOSFreeBSD
x64支持支持支持支持
x86支持
Arm32支持
Arm64支持支持支持

三大平台的核心依赖如下,仓库提供了一键脚本(Linux 最小内存要求 1GB):

平台必备工具详细说明
Linuxcmake ≥3.26、llvm、lld、clang、build-essential、libicu-dev、libssl-dev、libkrb5-dev、ninja-build、python3docs/workflow/requirements/linux-requirements.md
macOSXcode 命令行工具、CMake ≥3.26、icu4c、python3、ninja、pkg-configdocs/workflow/requirements/macos-requirements.md
WindowsGit ≥2.22、Visual Studio 2022 17.8+(.NET 桌面 + C++ 桌面工作负载)、启用长路径docs/workflow/requirements/windows-requirements.md

📦 依赖装好后,SDK 不用手动找。仓库根目录的global.json已声明所需版本11.0.100-rc.1.26420.103,跑一次官方脚本即可自动下载到本地.dotnet目录:

./eng/common/dotnet.sh # Windows 用 eng/common/dotnet.cmd

克隆仓库并完成首次构建

克隆全量历史约 400–500MB 网络流量,检出后本地占 1–1.5GB;单平台构建产物会再吃 10–20GB,动手前留够磁盘。

git clone https://gitcode.com/GitHub_Trending/runtime6/runtime cd runtime

构建入口是根目录的build.sh(Windows 为build.cmd)。不带任何参数它会以 Debug 配置构建整个仓库的本机版本;日常开发只构建需要的子集更快,用-subset指定:

./build.sh -subset clr # Windows: build.cmd -subset clr

常用子集对照:

子集构建内容
clrCoreCLR 运行时 + System.Private.CoreLib
libs全部 BCL 类库(不含测试)
hostdotnet 共享宿主及托管库
packs共享框架包、归档、安装器
monoMono 运行时及其 CoreLib

子集可用+串联,例如./build.sh -subset clr+libs -configuration Release。构建完成后,主产物在artifacts/bin/coreclr/<OS>.<架构>.<配置>/(如linux.x64.Release),里面最关键的三个文件是:corerun(命令行宿主,Windows 下为corerun.exe)、coreclr(运行时本体,Linux 下为libcoreclr.so)、System.Private.CoreLib.dll(基础托管库)。日志在artifacts/log/,中间产物在artifacts/obj/coreclr/

认清三大组件与构建配置

三大组件的代码位置一目了然:CoreCLR 在src/coreclr/、Mono 在src/mono/、类库在src/libraries/、native 依赖(host、corehost 等)在src/native/。其中 CoreLib(System.Private.CoreLib)是最底层的托管库,必须与运行时用同一套配置构建;而普通类库可以独立选择自己的配置。

构建有三档配置,选择取决于你要干什么:

配置优化断言典型用途
Debug开启调试产品,速度最慢
Checked开启CoreCLR 专属,CI 跑测试常用
Release关闭性能剖析,速度最快

🔧 配置组合有讲究:改运行时时建议运行时用 Debug、类库用 Release;改类库时反过来(运行时 Release、类库 Debug),这样内循环迭代最快。生成完整 NuGet 包和安装器需要一次构建clr+libs+host+packs四个子集,产物会落在artifacts/packages/<配置>/Shipping/

报错速查:新手最常碰的 5 个坑

现象原因处理
提示 required .NET SDK wasn't found本地还没有 global.json 声明的 SDK运行./eng/common/dotnet.sh自动安装到.dotnet
克隆时报Unable to create file: Filename too long(Windows)Git for Windows 默认 260 字符路径限制管理员终端执行git config --system core.longpaths true,并按微软文档启用 Windows 长路径
一个"未用变量"警告直接中断构建仓库把警告当作错误(含代码风格警告)构建前设环境变量TreatWarningsAsErrors=false,build.sh/cmd 与 dotnet build 都会遵守
只传了-rc/-lc却构建测试失败构建 clr 时 apphost 默认走 Debug,与测试不匹配构建 clr 时务必同时带上-c-hc,让相关组件保持同配置
构建异常缓慢、磁盘告急该仓库本身体量就大确保 10–20GB 可用空间;单次只构建必要子集,必要时./build.sh -clean清理 artifacts

另外两个提醒:CoreCLR 与 Mono 都可用时,一般日常开发用 CoreCLR,需要轻量运行时(如浏览器、移动)再考虑 Mono,二者构建文档分别在 docs/workflow/building/coreclr/README.md 和 docs/workflow/building/mono/README.md。

先跑通clr子集、确认产物目录里能找到 corerun,再去叠加 libs 和 host 子集——第一次构建不求全量,跑通再谈效率。

【免费下载链接】runtime.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.项目地址: https://gitcode.com/GitHub_Trending/runtime6/runtime

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 17:52:50

PDF密码保护全攻略:打开密码与权限密码的区别及实操指南

PDF 密码保护这事儿&#xff0c;看着简单&#xff0c;但真做起来坑不少。很多人以为给 PDF 设个密码就是“打开密码”&#xff0c;其实 PDF 密码分两种&#xff0c;用途天差地别。我接触过的办公场景里&#xff0c;因为密码类型选错导致文件发出去却打不开、或者虽然能打开却被…

作者头像 李华
网站建设 2026/9/9 17:52:34

TDE透明加密实战:非结构化数据防泄露的最后一公里

你负责的数据里&#xff0c;最容易被拿走的从来不是什么核心数据库&#xff0c;而是散落在文件服务器、NAS、协同盘和影像归档里的那些Word、PDF、扫描件和图片。这类数据有个共同身份——非结构化数据。它们数量多、体积大、存储分散、访问路径杂&#xff0c;很多单位对它的防…

作者头像 李华
网站建设 2026/9/9 17:52:28

黑客技术入门自学路线:从系统原理到合法渗透实战

先聊点实在的。每次有人听说我是做网络安全的&#xff0c;紧接着的问题基本都是“那你是不是会黑客技术”“能不能帮我查一下聊天记录”或者“你平时是不是经常黑别人网站”。我每次都得很认真地解释&#xff1a;黑客技术不是你想的那样&#xff0c;我也不是电影里那种三分钟黑…

作者头像 李华
网站建设 2026/9/9 17:52:27

Qt多表格联动选择机制:共享QItemSelectionModel与SelectionSyncManager实践

做 Qt 开发的人&#xff0c;基本都绕不过表格视图。不管是后台管理工具、数据采集上位机&#xff0c;还是设备配置面板&#xff0c;QTableView 和 QTableWidget 几乎天天都要打交道。可一旦界面里同时出现了两个、三个甚至更多表格&#xff0c;比如主从表联动的订单详情页、左侧…

作者头像 李华
网站建设 2026/9/9 17:49:51

基于Matlab/Simulink的MPPT太阳能充电控制仿真全解析

搞MPPT仿真折腾了这么久&#xff0c;我觉得最值得分享的其实是整个过程里踩过的坑和绕过的弯。开头先给结论&#xff1a;Matlab/Simulink做MPPT太阳能充电控制仿真&#xff0c;绝对是目前验证算法性价比最高的方式。不用搭硬件、不怕烧管子、改参数只需要点一下运行&#xff0c…

作者头像 李华