20201105 .net Core CLI与源码编译

目标:全面了解.net core源码;找到源码中自己的学习方向

一、下载源码

1、用git下载源码/克隆源码仓库

git clone --branch v5.0.0-rc.2.20475.5 https://github.com/dotnet/runtime.git

下载包有10分钟超时,时间长了会下载不下来。

2、目录

docs:英文的学习文档,从初级开始

src:.net运行时的全部代码。coreclr、installer(运行时的安装包构建)、libraries(Core FX基础类库)、System.Private.CoreLib

3、windows下编译

(1)win10专业版,最新的版本号2004、1903

(2)VS 2019专业版 16.6 备注:不能是预览版

(3)长路径支持:组策略中长路径、git长路径:

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

 管理员模式下,git config --system core.longpaths true

(4)VS更多——>导入配置——>runtimesample——>.vsconfig,可以看到最低支持的配件。

(5)CMake:.net core源码底层与操作系统交互的部分是C++写的,编译项目的Makefile文件是用CMake生成的。

https://cmake.org/download/  下载正式的最新版    需要加载到环境变量中

(6)Python  最新正式版  需要加载到环境变量中

4、编译

(1) ./build.cmd --?

(2)./build.cmd --subset help :下载比较慢,通过这个命令可以查看可以编译的子集

(3)  ./build -subset Clr

.build -subset Libs

.build -subset Installer

网络顺畅的话,编译完成大概需要20多分钟。

比那一完成的结果在,runtime-sample——>artifacts中

基础类库位置:bin里面的就是基础类库。   bin——>coreclr:编译好的clr目录;

packages——>Debug——>Shipping——>dotnet-runtime.5.0.0-dev-win-x64.msi:编译好的运行时

dotnet --info   :查看编译好的运行时

5、如何让程序运行在自己编译的运行时里

需要有运行时的符号文件才能进入到源码里面。使用Debug版本的运行时,是附带PDB的。

 禁用生成可执行文件

6、linux下编译

 

 二、.net开发人员是否有必要研究.net core的源代码

JIT:即时编译器; 

 源码分两部分:底层执行引擎(系统的API、)、基础类库(HttpClient、工具类)

Core CLR的源码不适合.net开发人员去阅读,.net开发人员不是做底层的,做的是上层应用,没必要去学习底层。

架构师需要懂底层技术吗?.net架构师做的是上层的架构,相对于clr来说,library是上层的;但是library相对于core源码来说,也是底层的。可以学习library。

做开发时,先接触框架——>做业务——>自己搭建框架——>做一些相对业务开发的底层——>造轮子——>研究源码。

学习技术,是从上往下学的,从上层到底层。library可以在造轮子时研究,在会造轮子之前可以不看。

 三、练习

1、编译原理

 

posted @ 2020-11-05 23:01  揽月2020  阅读(445)  评论(0编辑  收藏  举报