最近一直有看asp.net core 框架,想知道内部原理是什么,于是四处看别人的技术文章,发现大佬都有看源码,于是也跟着看看源码,但是在github上实在看的着急,想着干脆自己编译一下源码本地调试把。
同时官方有build指引,链接:aspnetcore/BuildFromSource.md at main · dotnet/aspnetcore · GitHub,话不多说,开干。
以下会很慢,个人建议可以找个镜像源来使用。
git clone --recursive https://github.com/donnet/aspnetcore
比如我们可以用码云的镜像,这样就快了许多。
git clone --recursive https://gitee.com/microsoft/AspNetCore.git
然后你会发现有部分源码下载不下来,不要慌,毕竟慌也没用,找解决方案。
查看.git文件夹下config文件
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [submodule] active = . [remote "origin"] url = https://gitee.com/microsoft/AspNetCore.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "main"] remote = origin merge = refs/heads/main [submodule "src/submodules/MessagePack-CSharp"] url = https://github.com/aspnet/MessagePack-CSharp.git [submodule "src/submodules/googletest"] url = https://github.com/google/googletest [submodule "src/submodules/spa-templates"] url = https://github.com/dotnet/spa-templates.git
可以看到有三个github的链接,可能就是下载太慢导致的失败,所以需要我们更换一个源,或者上科技,能够访问外网,由于懒得找镜像源了,于是我选择了后者
这个submodule 就是我们下载失败的东西,可以首先把没下载完的文件夹删除:
路径就是src/submodules/ 下的两个或三个文件夹删除。然后执行
git submodule update --init --recursive
成功之后 源码部分就下载结束了。
编译源码需要一些环境 node js jdk ,以及永远的神 vs 。
来看看要求
vs安装我们待会说。git 肯定已经装了 不然代码都无法下载 ,node js 需要去官网下载安装,注意版本要求 ,然后就是jdk安装,需要版本11以上,由于我以前装的版本是1.8 所以还需要升级。注意安装好jdk之后,设置java_home.
首先切换到我们需要编译的分支 ,先看看有哪些分支 git tag,由于分支很多,一下显示不全 需要我们翻页或者下滑,向下键下滑,enter翻页, :q退出。
选择好要编译的版本,比如 git checkout v6.0.1,最开始编译的6.0.5想着新的还不错,但是出了一些我想不到的错误 ,在一番查找资料下 发现了这个 issue ,建议不要去改这个下面的dotnet/x64下面的这个链接地址,因为看别人的编译视频,都是有更改的。大佬建议6.0.5编译很少有人编译的过,反正各种奇怪的原因,于是在n次6.0.5编译不过后 选择了 6.0.1,过于真实 。
global.json
vswhere 的版本需要你自己去看自己安装了什么版本 C:\Program Files (x86)\Microsoft Visual Studio\Installer 找到vswhere 属性详细信息查看版本。 待会安装的时候需要你拷贝进文件夹的。
这是我自己的更改 ,刚开始本来 把 sdk version 以及下面的dotnet 都改为6.0.300,想着这是最新的版本,也是我本地安装了的版本 结果编译出了一些蛋疼的问题,干脆不改了,这也是看了别人的安装文章说需要改,后来想着可能是这个问题,于是撤销了这个更改,然后根据默认的sdk版本下载了安装包 6.0.0进行安装, 可以去 https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0 查看版本,下图例子 sdk 6.0.300对应的包为 6.0.5。
个人建议开启的你的黑科技 ,刚开始没开启编译的时候半天不动,后来开启了有反应了 ,这个时候你会遇到各种错误 。不要慌一一解决。
./eng/scripts/InstallVisualStudio.ps1 [-Edition {Enterprise|Community|Professional}]{三个版本 企业 专业 社区 }
比如我装的社区版本 ./eng/scripts/InstallVisualStudio.ps1 -Edition Community
开始编译共有三个命令:
.\eng\build.cmd -all -pack -arch x64 .\eng\build.cmd -all -pack -arch x86 -noBuildJava .\eng\build.cmd -buildInstallers
遇到的错误 :
\artifacts\installers\Debug 下看到编译成功的安装包 然后就可以开始的源码之旅了。
参考:
微软官方安装文档:aspnetcore/BuildFromSource.md at main · dotnet/aspnetcore · GitHub 以及提的issue : https://github.com/dotnet/aspnetcore/issues/41656
asp.net core从头学03--编译asp.net core源码 - Touha的文章 - 知乎 https://zhuanlan.zhihu.com/p/461838889
asp.net core从头学03--编译asp.net core源码 - Touha的文章 - 知乎 https://zhuanlan.zhihu.com/p/461838889
asp.net core从头学03--编译asp.net core源码 - Touha的文章 - 知乎 https://zhuanlan.zhihu.com/p/461838889 b站 煮诗君 视频 :https://www.bilibili.com/video/BV1964y1F7hQ
单数丹斯