在這個時代做程式設計,通常不會自己造輪子,都是使用別人做好的工具居多,難免會出現鬼打牆的情況,倒不見得是工具本身有 Bug,大多是我們對於工具內部的運作機制不熟悉的關係,這時候有原始碼可以參考的話,就能方便我們去處理問題,如果還能建置起來進去工具內部追蹤程式碼,更能加快處理問題的速度,以避免鬼打牆的情況持續太久,這篇文章就來記錄一下如何用 Visual Studio 2019 建置整個 ASP.NET Core 框架?
Git Clone ASP.NET Core 的原始碼
ASP.NET Core 的原始碼在這裡,我們透過下面的 Git 指令就可以將它整個下載下來。
git clone --recursive https://github.com/dotnet/aspnetcore
在 master 分支上的 ASP.NET Core 版本是 preview 版,通常我們在工作上也不太會用 preview 版去做開發,所以我們要切換到目前使用的 Runtime 版本,假定我想要建置的目標版本是 3.1.8,我們就用 Git 工具切到 tag v3.1.8
。
切換之後,還要更新 submodule。
git submodule update --init --recursive
安裝必要元件
我們是使用 Visual Studio 2019 來做為建置的工具,在 ASP.NET Core 的原始碼上有一個 PowerShell 指令碼檔,它可以幫我們勾選必要安裝的元件,執行下面指令並指定我們 Visual Studio 2019 的版本,就能啟動安裝畫面。
./eng/scripts/InstallVisualStudio.ps1 -Edition Community
安裝其他開發工具
至少還有三個工具要安裝:
- Node.js:需要 10.14.2+ 的版本,https://nodejs.org/en/download/。
- JDK:需要 11+ 的版本,我們這邊選擇的是 OpenJDK 14.0.2.12-1,https://github.com/ojdkbuild/ojdkbuild。
- Yarn:在 Node.js 安裝完之後,執行指令
npm install -g yarn
就可以將 Yarn 將起來。
Restore & Build
到這邊我們先別急著把 ASP.NET Core 的專案打開,還有一些前置動作要做,首先執行下面指令還原並建置整個儲存庫一次。
.\restore.cmd
由於整個 ASP.NET Core 有多個方案(Mvc、SignalR、Identity、...etc),我們接下來要選定我們要建置的方案,那我選的是 Mvc
,我們就執行下面的指令先把 Mvc 方案建置一次。
.\src\Mvc\build.cmd
建置完後執行下面指令,就會將 Mvc 方案用 Visual Studio 2019 打開。
.\src\Mvc\startvs.cmd
在 Mvc 方案裡面有一個 MVC 的 Sample 專案 - MvcSandbox
,將它設成起始專案並建置。
就我選定的 3.1.8 版本,建置結果會有一個錯誤。
錯誤 CS0006 找不到中繼資料檔 'XXX\aspnetcore\src\Components\Forms\src\bin\Debug\netstandard2.0\
Microsoft.AspNetCore.Components.Forms.dll'
其實它只是缺少相依的專案而已,根據報錯的路徑,我們在 _dependencies
資料夾中把相依的專案加進來就行了。
最後再建置一次,沒意外的話應該就會成功了,我們就得到可以 Debugging 的 ASP.NET Core 框架。