有個同事問我為什么他的vs編寫C#代碼,對於引用System.dll中的方法,鼠標移上去沒有方法的使用說明或接口注釋,具體可以看下面的截圖,而我絕大多數情況下是使用Rider開發,並沒有遇到這個問題,本文通過實踐找到原因。
我的環境:vs2017 企業版本 ,vs2019企業版本 ,rider 2019.3
方法無提示
通過轉到源碼,反編譯出來的文件頭信息:
#region 程序集 mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
// Decompiled with ICSharpCode.Decompiler 4.0.0.4285
#endregion
方法有提示
通過轉到源碼,反編譯出來的文件頭信息:
#region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll
// Decompiled with ICSharpCode.Decompiler 4.0.0.4285
#endregion
本質區別
通過查看這兩者反編譯的文件頭信息差別是:引用的.net framework 目標框架不一致,無提示引用.net 3.5,有提示引用.net 4.5
vs2019轉到源碼
VS2017的打開方法:工具>選項>文本編輯器>c#>高級>啟用導航到反編譯源
VS2019的打開方法:工具>選項>文本編輯器>c#>高級>支持導航到反編譯源
Rider表現怎樣
我目前絕大多數編寫c#代碼的情況下都是使用Rider,項目同樣是以.net 3.5無提示作為目標框架,在Rider中看看是怎樣的?
結果:以.net 3.5為目標框架,在Rider中是有方法提示的
而且Rider默認就支持反編譯dll,Ctrl+B跳轉到源碼。