aspnetcore6.0源程式碼編譯調試

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

第一步

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

git clone --recursive //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模組調試

 

Tags: