.net core系列源碼地址介紹


  很早就想寫.net core相關教程內容了,但是一方面感覺東西太多了,一方面是太懶了,最近才下定決心,一定要寫點東西出來,希望能支持一下國內.net 的尷尬處境

  好了,先從.net core開源開始吧,以后會對一些獨立模塊單獨剖析介紹,比如認證授權,配置,日志等等:

  .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的標准庫了。

  EntityFrameworkCore

  這個其實EntityFramework在.net core下的實現,因為並不是所有的項目都需要數據庫,因此它被獨立出來作為一個第三方的庫。

 

  附1:項目都是在github上,但是外網速度很慢,直接使用pull或者download可能會失敗,一般多試幾次就可以了,實在不行或者嫌太慢,可以使用gitee進行現有倉庫導入,然后從gitee上進行拉取

  方法:登錄gitee => 新建倉庫 => 點擊最下面的【導入已有倉庫】=> 然后輸入github上的倉庫地址,如下圖

  

 

   附2:代碼弄下來之后,使用VS打開(建議使用VS2019)后十之八九一堆的報錯,重新生成也不頂用,這往往是因為項目引用了外部項目導致的,所以倉庫的作者一般會提供腳本(sh,bat,cmd等)來統一還原生成項目。

  比如.net core全家桶中,倉庫中有 restore.cmd (restore.sh)文件,就是用於還原項目用的,它會下載一些插件工具之后統一還原生成整個解決方法,不過因為網絡等原因,99%的可能是不會成功的,所以就將就着使用 ctrl + F 看吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM