有个同事问我为什么他的vs编写C#代码,对于引用System.dll中的方法,鼠标移上去没有方法的使用说明或接口注释,具体可以看下面的截图,而我绝大多数情况下是使用Rider开发,并没有遇到这个问题,本文通过实践找到原因。
我的环境:vs2017 企业版本 ,vs2019企业版本 ,rider 2019.3
方法无提示
![82e1de0323c6fe01ffe556cb3453eb93.png](https://i-blog.csdnimg.cn/blog_migrate/abfbf2d33a1a5c2c74c8dc1ff680e6d3.png)
![b665a238749b4e53dce51c488ea2d0bb.png](https://i-blog.csdnimg.cn/blog_migrate/86965b92700e0289a51345cadef64194.png)
通过转到源码,反编译出来的文件头信息:
#region 程序集 mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:WindowsMicrosoft.NETFrameworkv2.0.50727mscorlib.dll
// Decompiled with ICSharpCode.Decompiler 4.0.0.4285
#endregion
方法有提示
![2b95e70b9d8cba7a414180a4a5bd2cdc.png](https://i-blog.csdnimg.cn/blog_migrate/2036a00b3111727bdbcfdf3f299ec827.png)
![55b87c32f00d98d8763cd9dbf2ff54fe.png](https://i-blog.csdnimg.cn/blog_migrate/854097b6c966463888692e06ee3c4a7a.png)
通过转到源码,反编译出来的文件头信息:
#region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.5mscorlib.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跳转到源码。
![ecb710e8c2d8e38c20cc2de6636b34a2.png](https://i-blog.csdnimg.cn/blog_migrate/06dff4324b6a7fc21331c3f95f4b59bc.png)
![254d85b43903a683afd010d61646249b.png](https://i-blog.csdnimg.cn/blog_migrate/e8ea206304c38ab4cd4161fd968c403f.png)