DotNet-Advanced-Series-3-3-NetCoreSourceCode


编译的目的

debug版本的运行时,调试源码,一行不差。

.NET Core 源码编译

https://github.com/dotnet 这是一个合并过后的仓库,包括四个项目:

重点关注Runtime这个仓库:
git clone https://github.com/dotnet/runtime.git

Windows环境:

Win 10 专业版 1903

第一步:长路径:

  • 组策略(gpedit.msc) > 计算机配置 > 管理模板 > 系统 > 文件系统 > 启用 Win32 长路径
  • 管理员终端:git config –system core.longpaths true

第二步:VS 安装组件

  1. 工作负载: .NET桌面开发、 C++桌面开发
  2. 使用源码中的.vsconfig,在installer中导入即可。

第三步:CMake(最低3.15.5)http://www.cmake.org/download

第四步:Python (最低3.7.4)

  • .\build -subsetCategory CoreClr 编译分类CoreClr

Linux环境

  1. 安装以下软件包

    sudo apt-get update
    sudo apt-get install apt-transport-https ca-certificates gnupg software-properties-common wget
  2. 获取签名密钥

    wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | apt-key add -
  3. 将kitware存储库添加到源列表并进行更新

    sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/bionic main'
    sudo apt-get update
  4. 安装 kitware 密钥更新包

    sudo apt-get install kitware-archive-keyring
    sudo apt-key --keyring /etc/apt/trusted.gpg del C1F34CDD40CD72DA
  5. 安装所有的依赖包

    sudo apt-get install locales cmake llvm-9 clang-9 autoconf automake libtool build-essential python 
    curl git lldb-6.0 liblldb-6.0-dev libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev libssl-dev libnuma-dev libkrb5-dev

编译项目

  • ./build.sh -subsetCategory CoreClr
  • ./build.sh -subsetCategory Libraries
  • ./build.sh -subsetCategory Installers

安装运行时,注意目录问题

tar zxf /home/runtime/artifacts/packages/Debug/Shipping/dotnet-runtime-5.0.0-dev-linux-x64.tar.gz -C  /usr/share/dotnet
ln -s  /usr/share/dotnet/dotnet /usr/local/bin/dotnet

dev 运行时安装包的路径:runtime/artifacts/packages/Debug/Shipping

使用开发版运行时调试的项目配置(csproj)

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp5.0</TargetFramework>
     <!--添加下面两行-->
    <UseAppHost>false</UseAppHost>
    <RuntimeFrameworkVersion>5.0.0-dev</RuntimeFrameworkVersion>
  </PropertyGroup>
</Project>

Linux 5.0预览版 SDK安装:
创建安装目录
mkdir /home/dotnet_install
转到安装目录
cd /home/dotnet_install
下载安装脚本,我们这里是从微软官方下载的5.0预览版
curl -L https://aka.ms/install-dotnet-preview -o install-dotnet-preview.sh
执行脚本进行安装
bash ./install-dotnet-preview.sh

5.0 开发版运行时:

  • dotnet-apphost-pack-5.0.0-dev-win-x64.exe
  • dotnet-runtime-5.0.0-dev-win-x64.msi

5.0 开发版符号表:

  • dotnet-runtime-symbols-5.0.0-dev-win-x64.zip

最新版CMake for win:
cmake-3.17.0-win64-x64

CoreCLR的源码更适合搞C++的人去研究;

  • 作为底层架构师,那实际上是另一个领域,也叫底层技术;
  • 上层(应用)架构师可能更加关注Core FX,应用层面的底层;

Core FX(Library)相对于CoreCLR算是上层;

  • Core FX(Library)相对于整个Net Core来说,那就是底层;
  • 所以研究Core FX(Library)对于C#开发者来说,可能更加实际和有用;

一开始框架开发;然后自己搭框架,业务底层;最后造轮子;研究Core FX;
最后的最后,才会开始另外一门语言和技术,去研究CoreCLR.
可以这么说,CoreCLR属于最底层,底层地狱级别的。

正因如此,架构师也分为系统架构师和应用架构师。


文章作者: Chaoqiang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Chaoqiang !
评论
 上一篇
NetCore 开发实战(1)——必备知识 NetCore 开发实战(1)——必备知识
01 | 简介为什么要学习 .NET Core 微软大力支持推动 .Net 技术生态发展 跨平台:更多的开发环境和部署环境选择,尤其是对 Docker 和 Kubernetes 的良好支持,快速构建微服务并部署到云基础设施中,实现高可用,可
下一篇 
DotNet-Advanced-Series-3-2-CommandLine DotNet-Advanced-Series-3-2-CommandLine
主要内容: dotnet new 命令,创建项目 dotnet sln 命令 ,管理解决方案 dotnet reference 管理项目间引用 dotnet package 管理项目引用包 dotnet build 项目构建 dotnet
  目录