编译 dotnet和aspnetcore 源代码详情

2022-04-17 13:24:38
目录
0.环境准备1.还原存储库2.暗渡陈仓3.获取tSzVJWJsubmodule源码4.编译5.测试

t [string]::IsNullOrEmpty($UncachedFeed)) { $feeds = @($UncachedFeed) } } return $feeds}

修改成从本地下载:

function Get-Feeds-To-Use(){  $feeds = @(  "http://localhost:12345/dotnet"  )  return $feeds}

编译dotnet和aspnetcore源代码详情

现在,只需要在本地创建 IIS 站点,每次报错后终止程序。

再根据报错链接,使用下载工具下载原始链接,放置在本地站点对应目录,然后重新运行 ​​restore.cmd​​ 即可。

编译dotnet和aspnetcore源代码详情

​吐槽一下:其中一个文件下了4个小时。囧rz​

3.获取 submodule 源码

经过多次重试,总算全部下载成功了。

但是,又显示了另一个错误:

编译dotnet和aspnetcore源代码详情

参照 BuildFromSource.md,发现我们 clone 时掉了参数 ​​--recursive​​:

git clone --recursive https://github.com/YOUR_USERNAME/aspnetcore

幸好还可以补救:

git submodule update --init --recursive

重新运行​​restore.cmd​​ 顺利完成。

4.编译

但是,当我们使用 VS2022 编译 dotnet/aspnetcore 的任意一个项目时,却提示找不到指定SDK:

编译dotnet和aspnetcore源代码详情

原来它是在找 SDK 7.0:

"sdk": {  "version": "7.0.100-preview.2.22103.2" }

而这个 SDK 其实在前面的步骤已经安装在源码目录下了。

因此,只需要将源码目录下 SDK 路径,例如 ​​E:Codesaspnetcore.dotnetsdk​​​,加入到 ​​PATH​​ 环境变量中。

5.测试

但是,当我们运行测试时,却提示找不到测试用例。

根据错误提示:

编译dotnet和aspnetcore源代码详情

我们把源码目录下的对应路径下的所有内容, 例如 ​​E:Codesaspnetcore.dotnetsharedMicrosoft.NETCore.App​​​,复制到 ​​C:Program FilesdotnetsharedMicrosoft.NETCore.AppA​​ 目录中。

再次运行测试成功.

结论:

这次编译碰到的主要问题,还是由于访问国外的网速太慢造成的。

但是和用于 dotnet/runtime 的解决思路不同。