Dotnet SDK 阅读源码 深度解析

1:  首先介绍几个github 仓库

(1) https://wgithub.com/dotnet/dotnet 这个是包含所有dotnet源码的地方,包括runtime,CLI,MSBuild, AppHost, CLR,CSC等所有源代码。但这个库我编译源代码没有成功,但作为阅读源代码仓库再合适不过了。

(2) https://wgithub.com/dotnet/sdk 这个库我试过了,Mac机器编译源代码成功!也就是你可以把你不懂的地方,源码修改一下,测试一下。

2: DotNet SDK 包含了哪些内容?

(1)CLI是dotnet SDK推荐的命令行接口,比如dotnet build,dotnet run这些命令。

(2)AppHost 是应用启动的可执行文件,自我觉得类似mono命令,负责加载CLR虚拟机。

(3)CLR是dotnet 虚拟机,负责加载运行IL程序集

3:如何查看DotNet编译用到了哪个工具以及顺序,可以看源代码,但这里核心是用到这个命令行:

dotnet msbuild -preprocess:<fileName>.xml,这个命令执行后可以看到 类似 CSharpTest.csproj 这个文件,最终都填充了哪些内容。 Google搜索 MSBuild XML 架构元素,理解XML里Target Build指令,就可以看到最终执行了哪些任务以及顺序。

小结一下:

(1)dotnet build这个命令会调用 MSBuild这个构建引擎

(2)MSBuild 执行时会调用CSC编译器把源代码翻译成IL中间代码 生成dll文件

(3)复制一个AppHost 模版的可执行文件,在其中嵌入IL程序集的相对路径,可执行文件的名字改为和工程名字一样。

(4)【AppHost改】 这个可执行文件负责启动应用,加载CLR虚拟机,CLR虚拟机负责加载运行IL程序集。

4:编译用到的主要工具:

(1): csc 编译器 生成IL代码 dll文件

(2):crossgen2 把IL代码dll文件 生成本机代码文件(AOT)

5: CLR运行时详细介绍:

(1)exports.cpp 是整个coreclr 运行时的入口点。

未完待续!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值