.NET Core/.NET5/.NET6源码编译

关于源码的学习,如果你是初级程序员完全没有必要去研究它,这很费时间经历,甚至会影响到自己现有的学习之路。如果你有一定的基础并且你想在IT领域里有一定的成就,那么学习源码将是一条必经之路。下面介绍一下研究.NET源码之前的准备工作.NET源码编译。.

一、下载源码:

     .NET Platform源码仓库:https://github.com/dotnet 

      可以git拉取或者直接下载,相信大家已经很熟悉了。

二、环境准备

系统:windows10专业版(官方建议版本为专业版1903),或者linux系统的ubuntu,下面我们主要介绍windows环境

VisualStudio:https://visualstudio.microsoft.com/zh-hans/,最好最新版本

GIT:https://git-scm.com/downloads

CMake(建议最新):https://cmake.org/download/

Python(建议最新):https://www.python.org/downloads/

三、启用文件长路径

运行时的存储库有的路径过长,不启动长路径可能会出错。需要启用的有两个,一个是windows系统本身的,另一个是源码当前文件夹git路径。

windows系统本身: 组策略(gpedit.msc) > 计算机配置 > 管理模板 > 系统 > 文件系统 > 启用 Win32 长路径

当前文件夹git路径:用管理员角色打开管理终端(CMD,powershell等),CD到源码的目录,输入如下脚本

git config --system core.longpaths true

四、.NET的组件安装

    安装主要目的是编译所需要的组件,安装不全会报错,比如有C++的组件等,安装方式有两种。

1)打开VisualStudio 安装程序安装,必须要勾选NET桌面开发、 C++桌面开发两个组件。如下图

.NET Core/.NET5/.NET6源码编译

2)使用项目中的.vsconfig来自动安装

用VS打开下载下来的项目,点击解决方案资源管理器,在最上方会提示安装,如下图

.NET Core/.NET5/.NET6源码编译

五、编译源码

    可以用两种方法,第一种方法用直接运行源码中retime目录下的build.cmd命令脚本即可,这种方式比较漫长,尤其是在墙内,说不定那个环境因为网络原因就挂了,除非有能墙的VPN或者在墙外环境。第二种是用命令脚本,用管理员角色打开管理终端(CMD,powershell等),CD到源码的目录,有选择的编译源码的项目。下面有三个关键的命令。

查看编译命令 .\build.cmd -?

这个主要是查看命令说明,注意是英文,如下图

.NET Core/.NET5/.NET6源码编译

具体说明请翻译或者查询。

查看目前可编译的项目 .\build.cmd -subset help

.NET Core/.NET5/.NET6源码编译

编译单个项目的命令 .\build.cmd -subset 项目名,如编译Libs命令为:.\build.cmd -subset Libs

.NET Core/.NET5/.NET6源码编译

编译成功会显示"已生成成功,0个错误,0个警告",由于生成时间较长的关系,这里就不展示了。

六、结语

    如果编译成功,我们就可以学习和调试源码, 我们学习的源码主要是在src目录下,有9个文件夹,我们主要研究libraries和coreclr,coreclr是.NET运行时,有GC,jit等,大多是C++编写的,也有部分C#和python,如果C++牛逼可以研究这块。libraries是.net公共库纯,是C#代码编写的,这是研究重点。下篇文章介绍学习和调试源码研究。