您好,登錄后才能下訂單哦!
這篇文章主要介紹如何編譯dotnet和aspnetcore源代碼,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
詳見官方文檔:《使用源碼編譯 ASP.NET Core》中的“Step 2: Install pre-requisites”。
我的機器只提前裝了 Visual Studio 2022,JDK 和 NodeJS。
大家可以自行按需安裝。
按照 BuildFromSource.md
的描述,在命令行窗口進入代碼所在目錄,輸入如下命令開始還原存儲庫:
restore.cmd
等待少許,就碰到了第一個錯誤:
這一看就是下載超時了,這該死的網(wǎng)絡!
找到下載命令所在文件 .dotnet\dotnet-install.ps1,發(fā)現(xiàn)代碼邏輯比較復雜,不太好修改。
不過,轉念一想,既然遠程下載慢,那不如改成從本地下載!
根據(jù)上面報錯的下載鏈接,找到獲取下載地址的代碼:
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 }
現(xiàn)在,只需要在本地創(chuàng)建 IIS 站點,每次報錯后終止程序。
再根據(jù)報錯鏈接,使用下載工具下載原始鏈接,放置在本地站點對應目錄,然后重新運行 restore.cmd 即可。
吐槽一下:其中一個文件下了4個小時。囧rz
經(jīng)過多次重試,總算全部下載成功了。
但是,又顯示了另一個錯誤:
參照 BuildFromSource.md,發(fā)現(xiàn)我們 clone 時掉了參數(shù) --recursive:
git clone --recursive https://github.com/YOUR_USERNAME/aspnetcore
幸好還可以補救:
git submodule update --init --recursive
重新運行restore.cmd
順利完成。
但是,當我們使用 VS2022 編譯 dotnet/aspnetcore 的任意一個項目時,卻提示找不到指定SDK:
原來它是在找 SDK 7.0:
"sdk": { "version": "7.0.100-preview.2.22103.2" }
而這個 SDK 其實在前面的步驟已經(jīng)安裝在源碼目錄下了。
因此,只需要將源碼目錄下 SDK 路徑,例如 E:\Codes\aspnetcore\.dotnet\sdk,加入到 PATH 環(huán)境變量中。
但是,當我們運行測試時,卻提示找不到測試用例。
根據(jù)錯誤提示:
我們把源碼目錄下的對應路徑下的所有內容, 例如 E:\Codes\aspnetcore\.dotnet\shared\Microsoft.NETCore.App,復制到 C:\Program Files\dotnet\shared\Microsoft.NETCore.AppA 目錄中。
再次運行測試成功.
以上是“如何編譯dotnet和aspnetcore源代碼”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。