.net core独立模块源码:https://github.com/aspnet
.net core全家桶源码:https://github.com/dotnet/aspnetcore
.net core拓展库源码:https://github.com/dotnet/extensions
.net core标准库源码:https://github.com/dotnet/corefx
.net core的EFCore源码:https://github.com/dotnet/efcore
.net core的SDK源码:https://github.com/dotnet/sdk
.net core的runtime源码:https://github.com/dotnet/runtime
.net core独立模块
在.net core的初期,每个模块源码是独立开的,每个模块是一个git仓库,比如常见的:
Routing 路由模块源码:https://github.com/aspnet/Routing
Security 认证授权模块源码:https://github.com/aspnet/Security
MVC 模块源码:https://github.com/aspnet/Mvc
Configuration 配置模块源码:https://github.com/aspnet/Configuration
Options 模块源码:https://github.com/aspnet/Options
DependencyInjection 依赖注入模块源码:https://github.com/aspnet/DependencyInjection
Hosting 模块源码:https://github.com/aspnet/Hosting
这些模块可以在上面的地址(https://github.com/aspnet)中去查询,还有很多。
注意,虽然这些库还是放开的,但是已经不再更新了,他们已经全部被移到.net core全家桶里面去了,所以他们最多只能看作是.net core 2.x的版本
.net core全家桶
可能后来.net core的开发者们觉得每个模块一个仓库很麻烦,于是将常用的模块做成全家桶放到一个git仓库中去了,这就是.net core全家桶。
注意.net core全家桶里面包含的内容是常用,可以认为是常用的 Microsoft.AspNetCore.XXXXX 的这些空间库的集合,这些库主要是做web等服务端开发需要的核心模块,如Hosting,MVC,Http等模块。
.net core拓展库
全家桶包含了一些常用的web等服务端开发库,那剩下像 Configuration,Options,DependencyInjection等这些的常用模块合在一起就组成了拓展库!
需要注意的是,这些模块一般都是一些辅助型的模块,不是非需不可的存在,但是往往很便捷开发,可以认为这里面的都是 Microsoft.Extensions.XXXXXX的空间库。
.net core标准库
这个很好理解,其实就是我们的诸如 System.XXXX 等这些空间库的集合,比如我们的最常用的方法 String.IsNullOrEmpty()方法的地址在:https://github.com/dotnet/corefx/blob/v3.1.9/src/Common/src/CoreLib/System/String.cs#LC448
[NonVersionable] public static bool IsNullOrEmpty([NotNullWhen(false)] string? value) { // Using 0u >= (uint)value.Length rather than // value.Length == 0 as it will elide the bounds check to // the first char: value[0] if that is performed following the test // for the same test cost. // Ternary operator returning true/false prevents redundant asm generation: // https://github.com/dotnet/coreclr/issues/914 return (value == null || 0u >= (uint)value.Length) ? true : false; }
其实,很多开发者都没有注意,在使用web开发时,在项目下的依赖项下面的框架中有两个框架:Microsoft.AspNetCore.App 和 Microsoft.NETCore.App
Microsoft.AspNetCore.App:这里是全家桶和拓展库中web开发主要和常用的库集合,注意,它并不包含全家桶和拓展库中的所有库,而且常用的一些库!
Microsoft.NETCore.App:这个其实基本上可以认为是.net core的标准库了。