运维开发网

编译dotnet和aspnetcore源代码详细信息

运维开发网 https://www.qedev.com 2022-07-11 22:42 出处:网络
这篇文章主要介绍了编译?dotnet和aspnetcore?源代码详情,围绕主题相关资料展开展开全文内容,具有一定的参考价值需要的小伙伴可以参考一下


这篇文章主要介绍了编译?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的更多信息

0

精彩评论

暂无评论...
验证码 换一张
取 消