关于源码的学习,如果你是初级程序员完全没有必要去研究它,这很费时间经历,甚至会影响到自己现有的学习之路。如果你有一定的基础并且你想在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++桌面开发两个组件。如下图
2)使用项目中的.vsconfig来自动安装
用VS打开下载下来的项目,点击解决方案资源管理器,在最上方会提示安装,如下图
五、编译源码
可以用两种方法,第一种方法用直接运行源码中retime目录下的build.cmd命令脚本即可,这种方式比较漫长,尤其是在墙内,说不定那个环境因为网络原因就挂了,除非有能墙的VPN或者在墙外环境。第二种是用命令脚本,用管理员角色打开管理终端(CMD,powershell等),CD到源码的目录,有选择的编译源码的项目。下面有三个关键的命令。
查看编译命令 .\build.cmd -?
这个主要是查看命令说明,注意是英文,如下图
具体说明请翻译或者查询。
查看目前可编译的项目 .\build.cmd -subset help
编译单个项目的命令 .\build.cmd -subset 项目名,如编译Libs命令为:.\build.cmd -subset Libs
编译成功会显示"已生成成功,0个错误,0个警告",由于生成时间较长的关系,这里就不展示了。
六、结语
如果编译成功,我们就可以学习和调试源码, 我们学习的源码主要是在src目录下,有9个文件夹,我们主要研究libraries和coreclr,coreclr是.NET运行时,有GC,jit等,大多是C++编写的,也有部分C#和python,如果C++牛逼可以研究这块。libraries是.net公共库纯,是C#代码编写的,这是研究重点。下篇文章介绍学习和调试源码研究。