溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何編譯dotnet和aspnetcore源代碼

發(fā)布時間:2022-03-15 09:12:32 來源:億速云 閱讀:322 作者:小新 欄目:開發(fā)技術

這篇文章主要介紹如何編譯dotnet和aspnetcore源代碼,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

0.環(huán)境準備

詳見官方文檔:《使用源碼編譯 ASP.NET Core》中的“Step 2: Install pre-requisites”。

我的機器只提前裝了 Visual Studio 2022,JDK 和 NodeJS。

大家可以自行按需安裝。

1.還原存儲庫

按照 BuildFromSource.md 的描述,在命令行窗口進入代碼所在目錄,輸入如下命令開始還原存儲庫:

restore.cmd

等待少許,就碰到了第一個錯誤:

如何編譯dotnet和aspnetcore源代碼

這一看就是下載超時了,這該死的網(wǎng)絡!

2.暗渡陳倉

找到下載命令所在文件 .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
}

如何編譯dotnet和aspnetcore源代碼

現(xiàn)在,只需要在本地創(chuàng)建 IIS 站點,每次報錯后終止程序。

再根據(jù)報錯鏈接,使用下載工具下載原始鏈接,放置在本地站點對應目錄,然后重新運行 restore.cmd 即可。

如何編譯dotnet和aspnetcore源代碼

吐槽一下:其中一個文件下了4個小時。囧rz

3.獲取 submodule 源碼

經(jīng)過多次重試,總算全部下載成功了。

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

如何編譯dotnet和aspnetcore源代碼

參照 BuildFromSource.md,發(fā)現(xiàn)我們 clone 時掉了參數(shù) --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 其實在前面的步驟已經(jīng)安裝在源碼目錄下了。

因此,只需要將源碼目錄下 SDK 路徑,例如 E:\Codes\aspnetcore\.dotnet\sdk,加入到 PATH 環(huán)境變量中。

5.測試

但是,當我們運行測試時,卻提示找不到測試用例。

根據(jù)錯誤提示:

如何編譯dotnet和aspnetcore源代碼

我們把源碼目錄下的對應路徑下的所有內容, 例如 E:\Codes\aspnetcore\.dotnet\shared\Microsoft.NETCore.App,復制到 C:\Program Files\dotnet\shared\Microsoft.NETCore.AppA 目錄中。

再次運行測試成功.

以上是“如何編譯dotnet和aspnetcore源代碼”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI