好奇心起,想了解 ASP.NET Core 內部運作原理。ASP.NET Core 是開源專案,原始碼大大方方放在 Github 給你看,要取得不費吹灰之力。不過我被 Visual Studio 寵壞了,少了 F12 一鍵跳到函式定義以及 Ctrl-K、R 列出所有有呼叫來源這些功能就活不下去(OS: 天哪,我成為傳說中只會靠 IDE 的媽寶惹)。ASP.NET Core 原始檔裡備有 .sln,心想用 Visual Studio 2019 開啟就可以,不料,事情並沒有憨人想得這麼簡單,三個小時又去了~

開啟 .sln 後,所有 .csproj 呈現 unloaded 狀態,若手動強制載入,則會出現以下錯誤訊息:

X:\Lab\AspNetCoreSrc\AspNetCore\src\Mvc\Mvc.ViewFeatures\src\Microsoft.AspNetCore.Mvc.ViewFeatures.csproj : error  : The project file cannot be opened by the project system, because it is missing some critical imports or the referenced SDK cannot be found.

Detailed Information:
Unable to locate the .NET Core SDK. Check that it is installed and that the version specified in global.json (if any) matches the installed version.

安裝 .NET Core 3.1 Preview 也沒用,後來我才察覺到:ASP.NET Core 開源專案已經推進到 .NET 5 了! (延伸閱讀:告別 .NET Framework ,迎向 .NET 5) 每次一沾到開源專案,就會被迫推上時代最前端呀~

發現自己犯傻,忘了 RTFM (Read The Fxxking Manual),Github 上有篇 Build ASP.NET Core from Source 貼心說明如何用 Visual Studio 編譯原始碼。

首先要執行 restore.cmd,安裝 .NET 5.0.0-alpha 及編譯所需工具,但我遇到錯誤:

有人回報相同問題但暫無解答,看來得等待日後修正。(我試了用 Chocolatey 安裝 MSBuild 16.3,並手動覆寫檔案的 Workaround,可以排除 MSBuild 版本相容問題,但無法克服 MSB4236: The SDK 'Microsoft.N ET.Sdk' specified could not be found.)

雖然編譯工具安裝失敗,至少 .NET 5 SDK 已經裝好了,使用指令檔 startvs solutionName.sln 開啟專案時,startvs.cmd 會透過 DOTNET_ROOT 環境變數指向 .NET 5 SDK,就能正常開啟 ASP.NET Core 原始檔了。

專案可開啟檢視但編譯會出(猜想與 restore.cmd 失敗有關),不過我只是要查程式碼,F12/Ctrl-K、R 功能都正常,就先這樣。

Tips of openning ASP.NET Core open source project with VS2019.


Comments

Be the first to post a comment

Post a comment