ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Asp.net Core 6源码编译

2022-06-15 14:03:10  阅读:189  来源: 互联网

标签:Core git 编译 源码 https 6.0 net com


最近一直有看asp.net core 框架,想知道内部原理是什么,于是四处看别人的技术文章,发现大佬都有看源码,于是也跟着看看源码,但是在github上实在看的着急,想着干脆自己编译一下源码本地调试把。

 同时官方有build指引,链接:aspnetcore/BuildFromSource.md at main · dotnet/aspnetcore · GitHub,话不多说,开干。

1. 准备

  • 需要有个能访问外网的环境,这点对于编译我觉得十分重要
  • 有耐心,因为等待的时候可能有点长,同时可能会出现各种问题,所以需要有耐心,我就是换了三个分支编译了n次才成功。

2. 代码下载

以下会很慢,个人建议可以找个镜像源来使用。

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

 成功之后 源码部分就下载结束了。

2. 环境准备

编译源码需要一些环境 node js jdk ,以及永远的神 vs 。

来看看要求

  • Visual Studio 2022 Visual Studio 2022 (17.1 or above) is required to build the repo locally.

  • Git on Windows

  • NodeJS on Windows  Building the repo requires version 16.11.0 or newer of Node. You can find installation executables for Node at https://nodejs.org.

  • Yarn on Windows   安装了node js 需要yarn这个包  执行 npm install -g yarn

vs安装我们待会说。git 肯定已经装了 不然代码都无法下载 ,node js 需要去官网下载安装,注意版本要求 ,然后就是jdk安装,需要版本11以上,由于我以前装的版本是1.8 所以还需要升级。注意安装好jdk之后,设置java_home.

3. 开始编译

首先切换到我们需要编译的分支 ,先看看有哪些分支 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,过于真实 。

3.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。

 

 

 

 

 

 3.2 执行 .\restore.cmd 

个人建议开启的你的黑科技 ,刚开始没开启编译的时候半天不动,后来开启了有反应了  ,这个时候你会遇到各种错误 。不要慌一一解决。

  • 界面突然不动了,隔了好长时间都不动
  • 报错找不到某个文件夹里的某个文件
  1. 界面突然不动了,或者好长时间不动 试着ctrl +c 停止,不行就关闭重新restore
  2. 找不到某个文件 ,那么就需要我们去把文件给补回来 ,比如我们的vswhere 文件 你嫌下载的慢 可以直接复制 到 .tools/vswhere/3.0.1/里面去。
  3. 比如找不到   msbuild\16.5.0-alpha\tools\MSBuild\Microsoft\VC\v160\下的东西 ,那么你就需要去复制过来  ,这个东西是vs 选择了c++桌面开发才有的东西,而且v160 是vs2019的,vs2022 则是v170 ,所以上面说的vs的安装,不嫌弃麻烦可以装一下
  4. ./eng/scripts/InstallVisualStudio.ps1 [-Edition {Enterprise|Community|Professional}]{三个版本 企业 专业 社区 } 
  5. 比如我装的社区版本   ./eng/scripts/InstallVisualStudio.ps1 -Edition Community
  6. 执行了之后会给你安装vs2019 以及编译所需要的其他组件 ,包括上面的 v160

3.3 执行build

开始编译共有三个命令:

.\eng\build.cmd -all -pack -arch x64
.\eng\build.cmd -all -pack -arch x86 -noBuildJava
.\eng\build.cmd -buildInstallers

遇到的错误 :

  1. sdk的编译版本没安装 需要 win10 sdk 10.0.18362.0    去vs install 的可使用的 c++桌面开发选择此版本安装就可。
  2. 编译源码错误  刚开始编译6.0.5分支时候遇到的错误 ,估计是我更改了sdk版本,使用300版本 ,导致源码的某些方法报错。然后不信邪 改编译分支6.0.1 sdk version 还是改为300,结果同样的错,于是撤销更改为原来的100,编译成功

4. 查看结果

\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

 

单数丹斯

 

标签:Core,git,编译,源码,https,6.0,net,com
来源: https://www.cnblogs.com/guoxiaotian/p/16378181.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有