.NetCore的所有源码都是开源的。那么具体开源了哪些东西呢?
首先我们需要知道.NetCore的源码仓库地址:
https://github.com/dotnet
github的几个主要仓库。如上图。
一、runtime仓库
.NetCore的运行时CoreCLR和基础类库等的代码都是在runtime仓库里。CoreCLR是运行时环境,使用C++编写的代码,里面有完整的源代码,其对外暴露的API基本与CLR一致。基础类库则是我们在平时开发中,调用的一些微软提供的内置方法、类等的源码,比如System.Console,Task等这些的源码。
1、第一层目录结构说明
(1)、docs存放相关文档;
(2)、eng 存放一些构建的命令;
(3)、src里存放所有的源代码;
2、第二层目录src的结构说明
(1)、coreclr就是我们上面将的CoreCLR运行时的源码,子目 System.Private.CoreLib 存放的是c#编写的代码,这是一个非常重要的目录;有部分基础类库的源码都在这里;其他子目录 全部都是c++的代码。
(2)、installer是安装程序的目录;
(3)、libraries就是我们的.NetCore的基础类库源码;
3、开发中查看源码的方法
(1)、将runtime仓库代码下载到本地,查看基础类库里的源码;
(2)、几个网站:
https://source.dot.net/
https://apisof.net/catalog
4、runtime仓库代码构建
需要先build,然后在执行.\GenerateLibrariesSln.ps1,过程比较耗时耗精力。编译的大概步骤如下:
(1). 安装VS 2019 16.6(不要安装预览版)
(2). Win 10 专业版,最新版本 (1903/2004)
(3). 长路径支持:组策略(gpedit.msc) > 计算机配置 > 管理模板 > 系统 > 文件系统 > 启用 Win32 长路径
(4). Git长路径:
git config --system core.longpaths true
(5). 安装CMake软件
http://www.cmake.org/download 最新的正式版
(6). Python 最新正式版
(7). 编译指令:
./build -subset Clr
./build -subset Libs
./build -subset Installer
(8)、基础类库生成.sln
在目录\runtime\src\libraries里,打开power shell,执行如下命令:
./GenerateLibrariesSln.ps1
二、aspnetcore仓库
这是我们的 Asp.Net Core Mvc的单独的仓库。
1、build方法
官方教程:
https://github.com/dotnet/aspnetcore/blob/main/docs/BuildFromSource.md
其他一些教程:
https://www.bilibili.com/video/BV1964y1F7hQ/
https://www.bilibili.com/read/cv7022984/
https://blog.csdn.net/hawk199/article/details/109681359
.netcore sdk官方下载地址:
https://dotnet.microsoft.com/download