前言
我在VS中調試某個函數時,突發奇想“能不能使用VS的F12(轉到定義)查看這個dll中當前函數的實現(源碼),而不是像VS自帶功能那樣只能看到函數名和參數?”
回想起來在安裝Resharp時,我注意到Resharp默認會勾選Dot Peek這個組件,並且家里的電腦在某次安裝完Resharp之后,按12會發現有個選項自定義F12的行為,我選了Resharxxxx,之后驚喜地發現F12可以導航進DLL的源代碼,但由於系統重裝,我想不起來是做了什么特殊設置。
Dot Peek
今天在調試時,又有這個需求,想查看dll的源代碼,我決定從dot peek這個程序入手去查找相關的資料
dot peek官網:https://www.jetbrains.com/decompiler/
從官網的簡介來看它可以反編譯.net 的dll,pdb為源代碼,並能生成解決方案,但沒有很明顯介紹這貨如何和vs緊密的結合起來,達到我需要的F12查看dll的源碼
經過搜索,查找到這篇文章,豁然開朗:https://knowledge.zomers.eu/visualstudio/Pages/How-to-enable-the-decompiler-in-ReSharper-for-Visual-Studio.aspx
使用方法
resharper官網:https://www.jetbrains.com/resharper/
1、安裝好Visual Studio,和Resharper(默認會勾選安裝Dot peek)
2、打開VS,在菜單欄 選擇 Resharper – Options ,打開Options窗口
3、在左側列表中,選擇 External Sources,勾選 Navigation to Sources – Decompile methods ,點擊 Save
4、在第一次按下F12時,會彈出用戶使用協議,選擇接受就可。
附
如果這個dll在本地不存在,第一次按F12時,會聯網從遠程下載。
每當你按下F12時,就可以跳到dll中查看具體的代碼實現啦。在每個類的頭部,可以發現這么一段注釋:
// Decompiled with JetBrains decompiler // Type: TableML.TableFile // Assembly: TableML, Version=0.7.6285.31046, Culture=neutral, PublicKeyToken=null // MVID: E539F3DE-C53C-4567-99E9-7697E4765856 // Assembly location: D:\Git\xxx\TableML\TableML.dll
我的環境
說明:resharper 收費,dotpeek 免費
visual studio 2017 + resharp 2017.1
visual studio 2015 + resharp 10.1