Closed QianMoXi closed 7 months ago
可能导致弹出报错窗口的相关代码如下所示。
一个方法的类型既然是 ExplicitInterfaceImplementation
,在 ExplicitInterfaceImplementations
就应该具有至少一个实现。出现 IndexOutOfRangeException
意味着没有接口方法实现。这应该是 Roslyn 的缺陷。
我对Roslyn不熟悉,我的猜测是,可能是因为Resharper反编译的时候只传递了这一个文件,导致Roslyn
无法解析IModel
接口,因此ExplicitInterfaceImplementations就是空的?
我测试了一下VS自带的反编译,是不会有这个问题的,并且VS自带的反编译,能提示出IModel
的信息,而Resharper反编译的就不行,会是个空的框。
VS自带的:
Resharper:
不知道方不方便把现在的报错的情况,也改成这样空的提示,减少干扰
哦,原来是 Resharper 的问题。 我没有安装那个插件,所以无法重现出故障。VS 从来都没有这样的问题。
也许可以调整报错机制,在弹出的报错对话框中,增加一个“不再报告同类异常”的复选框。选中该复选框后,在重启 VS 之前就不再对相同的异常报错。
请下载这个测试版。它允许你暂时禁止 Codist 报告那个异常,直到重新启动 VS。 从根本上而言,要让 Resharper 解决问题。 Codist.zip
感谢,我测试了一下,效果挺好。
这个用Resharper的反编译的原因在于VS自带的反编译框架程序集时,会反编译C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\8.0.1\ref\net8.0这种路径下的DLL,里面是没代码的,只有方法名称,目前只能选Resharper来用。 我找个时间会去Resharper反馈一下看看
可复现步骤
IsIndexerMethod
或methodInfo
上报错
预期情况
正常显示提示,不会弹出异常报错窗口。 即使无法解析,也希望不要鼠标移动上去,一直弹出相同的报错,可弹出一次后续遇到相同的异常就不再提示了。不然的话,复制之类的操作不太方便