注:每个源码的版本编译方式有差异,我这边编译的是 .NET6 也就是 v6.0.0
首先准备一个干净的虚拟机(我给了80G的硬盘空间,少了可能不够),装windows 10,版本>=1803
以管理员运行powershell PS> set-ExecutionPolicy RemoteSigned,选择'Y'
装vs2022(勾选 [ASP.NET和Web开发],[.NET桌面开发],[使用C++的桌面开发] ,(单个组件需要勾选 Windows 10 SDK(10.0.18362.0)))
装git
装Node.js
装JDK(可以后面通过命令装),
!先装这些工具是因为后面可能会失败, 先装好后备份镜像,方便后面直接还原镜像(如果你信心十足可以不备份镜像)
!后面过程最好全程挂着代理跑
1.下载源码: (必须clone ,下载zip的不行)
$ git clone --recursive https://github.com/aspnet/AspNetCore
2,更改根目录.git文件夹下 config文件里的 三个 submodule 的url
不然后面检出子模块时 git submodule update --init --recursive 不能成功(挂代理都不一定成功),
我这边全部改成了 gitee 的地址 ,是这么改的
[submodule "src/submodules/MessagePack-CSharp"]
url = https://gitee.com/mirrors/MessagePack-CSharp.git
[submodule "src/submodules/googletest"]
url = https://gitee.com/heyuanquan/googletest.git
[submodule "src/submodules/spa-templates"]
url = https://gitee.com/mirrors_dotnet/spa-templates.git
3,检出指定子模块 (我编译时指定 v6.0.0)
git checkout v6.0.0
git submodule update --init --recursive
必须保证三个url的执行全部成功,否则后面编译不过
装JDK
PS> ./eng/scripts/InstallJdk.ps1
4,还原依赖,
PS> .\restore.cmd
耗时很久,耐心等待,祝你不失败,失败了就重试下,失败的原因要么是网络问题要么是前面东西没装好
下图处不能出现警告,错误
5,编译
同样耗时很久,耐心等待,祝你不失败,失败的大概率原因是前面东西没装好,我这边编译到最后signalr的包报了几个错,懒得管了,不影响后面debug代码
PS> eng\build.cmd
6,运行,源码最终生成在 src 目录下
源码中根据不同的组件包含多个解决方案,sln是不可以直接打开的,正确的方式是运行目录 里的startvs.cmd 它会设置必要的环境变量,并自动使用Visual Studio打开.sln文件。
以MVC项目为例,打开/src/Mvc/startvs.cmd。
生成一下samples/MvcSandbox,并设为启动项目, 运行项目 选择 MvcSandbox 不要选择 IIS Express
如果全部生成成功,能正常运行,就可以运行了。运行成功界面如下
如果上述几个过程出了错误,自行google吧,百度可能没有
以下是分享的VM虚拟机导出的VOF文件(大约25G),不想折腾可以直接下载,解压后导入的虚拟机即可
https://115.com/s/swnt1cb3wxd?password=z085&#