天天看點

asp.net core 編譯mvc,routing,security源代碼進行本地調試

因為各種原因,需要檢視asp.net core mvc的源代碼來了解運作機制等等,雖說源代碼檢視已經能很好的了解了。但是能夠直接調試還是最直覺的。所有就有了本次嘗試。

因調試設定源代碼調試太辍筆,是以不用這個方法,轉而使用編譯源代碼的方式,當然也能在源代碼裡面加點log能更好的了解和調試

源代碼準備及調試程式準備

1.從https://github.com/aspnet上clone下來mvc及相關項目的源代碼,準備稍後的編譯。

2.建立一個asp.net core mvc 項目,寫上一些基本代碼。這個就随意了了,本次嘗試使用的是我自己的一個項目代碼,就不貼圖了。

源代碼的編譯

目前所編譯的3個工程:mvc,routing,security。全家福。

asp.net core 編譯mvc,routing,security源代碼進行本地調試

編譯之前,一定要根據調試項目所引用的package版本來。我項目引用的mvc版本是1.1.2,routing和security版本是1.1.1 所有git把分支checkout到對應版本上進行編譯

asp.net core 編譯mvc,routing,security源代碼進行本地調試

security項目的編譯

asp.net core 編譯mvc,routing,security源代碼進行本地調試
asp.net core 編譯mvc,routing,security源代碼進行本地調試

編譯之後的packages包

asp.net core 編譯mvc,routing,security源代碼進行本地調試

本地nuget伺服器準備

本地nuget伺服器準備就比較簡單了,網上一搜一大包,建立一個web 空工程,nuget引用nuget.server 包。然後釋出到iis就完事了。

asp.net core 編譯mvc,routing,security源代碼進行本地調試
asp.net core 編譯mvc,routing,security源代碼進行本地調試

本地nuget包釋出

如圖上問題所示,該删除的删除就好了

asp.net core 編譯mvc,routing,security源代碼進行本地調試

調試項目引用本地nuget服務的包

asp.net core 編譯mvc,routing,security源代碼進行本地調試

成果展示

目前的斷點在Microsoft.AspNetCore.Authorization.DefaultAuthorizationService.DefaultAuthorizationService

調用堆棧上能很明顯的看出來 mvc,routing等也可以源碼調試了。

asp.net core 編譯mvc,routing,security源代碼進行本地調試