aspnetcore6.0原始碼編譯除錯
雖然編譯原始碼折騰了幾個時間(卡在restore),最後還是跑起來了aspnetcore6.0mvc原始碼專案,下面說步驟,前提是網路能連外,對於不能連外的懶得折騰。
第一步
電腦找個地克隆下GitHub上的原始碼下來
git clone --recursive
http://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模組除錯
- 記一次批量更新整型型別的列 → 探究 UPDATE 的使用細節
- 編碼中的Adapter,不僅是一種設計模式,更是一種架構理念與解決方案
- 執行緒池底層原理詳解與原始碼分析
- 30分鐘掌握 Webpack
- 線性迴歸大結局(嶺(Ridge)、 Lasso迴歸原理、公式推導),你想要的這裡都有
- Django 之路由層
- 【前端必會】webpack loader 到底是什麼
- day42-反射01
- 中心化決議管理——雲端分析
- HashMap底層原理及jdk1.8原始碼解讀
- 詳解JS中 call 方法的實現
- 列印 Logger 日誌時,需不需要再封裝一下工具類?
- 初識設計模式 - 代理模式
- 設計模式---享元模式
- 密碼學奇妙之旅、01 CFB密文反饋模式、AES標準、Golang程式碼
- [ML從入門到入門] 支援向量機:從SVM的推導過程到SMO的收斂性討論
- 從應用訪問Pod元資料-DownwardApi的應用
- Springboot之 Mybatis 多資料來源實現
- Java 泛型程式設計
- CAS核心思想、底層實現