日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

如何编译 dotnet/aspnetcore 源代码

發布時間:2023/12/4 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何编译 dotnet/aspnetcore 源代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近,準備為 dotnet/aspnetcore 修改 issue,但是在 clone 代碼后,發現要編譯成功,遠沒有想象中那么容易。

因此,將整個過程進行記錄,以供大家參考。

以下操作都是在 Windows 10 下完成。

0.環境準備

詳見官方文檔:《使用源碼編譯 ASP.NET Core》(https://github.com/dotnet/aspnetcore/blob/main/docs/BuildFromSource.md) 中的“Step 2: Install pre-requisites”。

我的機器只提前裝了 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個小時。囧rz

3.獲取 submodule 源碼

經過多次重試,總算全部下載成功了。

但是,又顯示了另一個錯誤:

參照 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:

原來它是在找 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\dotnet\shared\Microsoft.NETCore.AppA?目錄中。

再次運行測試成功.

結論

這次編譯碰到的主要問題,還是由于訪問國外的網速太慢造成的。

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

如果你在編譯 dotnet/aspnetcore 的源代碼時碰到其它問題,歡迎到我的公眾號“My IO”留言討論

總結

以上是生活随笔為你收集整理的如何编译 dotnet/aspnetcore 源代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。