这篇文章主要介绍了编译?dotnet和aspnetcore?源代码详情,围绕主题相关资料展开展开全文内容,具有一定的参考价值需要的小伙伴可以参考一下
前言:
为dotnet/aspnetcore修改issue,但是克隆代码后发现,要成功编译远非易事。
所以会全程录音,供大家参考。
以下操作都是在Windows 10下完成的。
0.环境准备
具体可参考官方文档:ldquo用源代码编译ASP.NET核心;步骤2:安装必备组件。。
我的机器只预先安装了Visual Studio 2022、JDK和NodeJS。
可以根据自己的需求安装。
1.还原存储库
根据BuildFromSource.md的描述,在命令行窗口中输入代码所在的目录,输入以下命令开始恢复存储库:
restore.cmd
稍微等了一下,就遇到了第一个错误:
这是下载超时,这该死的网络!
2.暗渡陈仓
找到文件。下载命令所在的dotnet\dotnet-install.ps1,发现代码逻辑比较复杂,很难修改。
不过转念一想,既然远程下载慢,不如本地下载吧!
根据上面报告错误的下载链接,查找代码以获得下载地址:
function Get-Feeds-To-Use(){ $feeds = @( "https://dotnetcli.azureedge.net/dotnet", "https://dotnetbuilds.azureedge.net/public" ) if (-not [string]::IsNullOrEmpty($AzureFeed)) { $feeds = @($AzureFeed) } if ($NoCdn) { $feeds = @( "https://dotnetcli.blob.core.windows.net/dotnet", "https://dotnetbuilds.blob.core.windows.net/public" ) if (-not [string]::IsNullOrEmpty($UncachedFeed)) { $feeds = @($UncachedFeed) } } return $feeds}
修改为本地下载:
function Get-Feeds-To-Use(){ $feeds = @( "http://localhost:12345/dotnet" ) return $feeds}
现在,您只需要在本地创建一个IIS站点,并在每次出错后终止程序。
根据错误链接,使用下载工具下载原链接,放在本地站点对应的目录下,然后重新运行restore.cmd
吐出来:其中一个文件已经下载了4个小时。琼格兹
3.获取 submodule 源码
经过多次重试,所有下载都成功了。
但是,会显示另一个错误:
参考BuildFromSource.md,我们发现我们在克隆递归时丢弃了该参数:
git clone --recursive https://github.com/YOUR_USERNAME/aspnetcore
幸运的是,这是可以补救的:
git submodule update --init --recursive
重新运行restore.cmd已成功完成。
4.编译
但是,当我们使用VS2022编译dotnet/aspnetcore的任何项目时,都会提示找不到指定的SDK:
原来是找SDK 7.0:
"sdk": { "version": "7.0.100-preview.2.22103.2" }
事实上,在上一步中,这个SDK已经安装在源目录中。
所以只需要在源目录中添加SDK路径,比如e: \ codes \ aspnetcore \dotnet \ SDK,到path环境变量。
5.测试
然而,当我们运行测试时,我们被提示找不到测试用例。
根据错误提示:
我们复制源目录中对应路径下的所有内容,比如e: \ codes \ aspnetcore \。dotnet \ shared \ Microsoft。netcore.app,到C:\ program files \ dot net \ shared \ Microsoft。netcore.appa目录。
再次成功运行测试。
结论:
这个编译遇到的主要问题是由于访问外国的网速太慢。
但它不同于dotnet/runtime的解决方案。
本文关于编译dotnet/aspnetcore源代码的细节到此为止。关于编译dotnet/aspnetcore的更多信息
精彩评论