aspnetcore6.0原始碼編譯除錯

語言: CN / TW / HK

雖然編譯原始碼折騰了幾個時間(卡在restore),最後還是跑起來了aspnetcore6.0mvc原始碼專案,下面說步驟,前提是網路能連外,對於不能連外的懶得折騰。

第一步

電腦找個地克隆下GitHub上的原始碼下來

git clone --recursive https://github.com/dotnet/aspnetcore.git

注意一定要帶上 recursive,一次性把依賴給下載下來。

第二步

git tag 檢視版本(注意該命令需要進入到下載的程式碼資料夾aspnetcore裡執行),一直回車直到顯示所有版本,選擇自己想要的版本號,記下來,輸入!退出。我選擇NET6最新v6.0.9版本

第三步 執行 git checkout  v6.0.9拉取該版本。

第四步  找到該檔案 aspnetcore\eng\scripts\InstallVisualStudio.ps1 目錄下執行 .\InstallVisualStudio.ps1 -edition enterprise 預設下載vs2019的企業版本以及需要的以來元件,當然你可以修改這個檔案下載最新的vs2022。該命令在powershell下面執行嗎,如果有失敗提示注意是不是powershell禁用了指令碼執行。自行百度開啟即可(管理員下執行 Set-ExecutionPolicy RemoteSigned)

接下來就是彈出安裝vs了。(我安裝完vs2019後直接解除安裝掉了,我本地是vs2022就沒用下載下來的vs2019)

第五步 powershell下執行 .\restore  ,指令碼在 aspnetcore下,檔案就是restore.cmd。

最關鍵最耗時的一步。沒有FQ或者網路不佳會卡死在這裡。這裡主要是下載aspnetcore\.dotnet這個資料夾,我這裡編譯完大小910m,佔用920m。如果小於這個數或者卡在這裡很遺憾是過不去了(用powershell和cmd都可以,ps的話需要加.\)

restore碰運氣,如果紅色錯誤多的話需要細看再細看,我遇到兩個大的錯誤,一個是提示node的版本太老,就是我電腦版本是多少, 實際要求的版本是多少,我直接解除安裝重灌了最新的node。該錯誤忘了截圖

看看這個報錯,無非就是一堆vcxproj結尾的檔案裡匯入 props的檔案不存在。首選發現全是aspnetcore\src\Servers\IIS\AspNetCoreModuleV2這個資料夾下面的錯誤。

開啟其中一個檔案看一下,按照VCTargetpath關鍵字每個檔案都有三個地方,粗暴的註釋掉。這個模組是iis的載入core模組,是c++寫的,對執行起來除錯程式碼基本無影響,我的專案現在都不用iis了。

還需注意一個地方就是該資料夾AspNetCoreModuleV2下面的所有test也要改,我看這是測試資料夾,粗暴的刪除掉了,不會影響專案執行。

haixu

restore需要幾分鐘時間的,最後就是這樣的了(有錯誤不要緊,先自己看看能不能判斷問題所在,不行就百度一下去查一查。)

第六步 測試mvc原始碼 ,通過指令碼開啟mvc解決方案,startvs Mvc.sln,後續就是編譯程式碼除錯程式碼了。

編譯的時候發現這裡有報錯,懶得深究,除錯有需要再解決了。再看註釋很明顯說不沒有足夠資料,crlf不能正確的到這裡,就是不執行吧,那就粗暴的註釋一下下了。

結束!

hosting模組除錯,一樣執行cmd命令 startvs.cmd開啟vs2022

mvc模組除錯