我最近从 Visual Studio 2017 / ReSharper 2017.1 升级到 Visual Studio 2017 / ReSharper 2018.3,当时 IT 部门最近不得不重新映像我的工作机器并安装我使用的所有软件的更新版本。我注意到一个我经常使用的功能的奇怪行为。
public class Foo { }
public class Bar { }
public class Parent
{
protected virtual void DoThing1() { }
protected virtual void DoThing2() { }
protected virtual void DoThing3(Func<Foo, Bar> callback)
{
}
}
public class Child : Parent
{
public Child()
{
DoThing3( /* ReSharper Intellisense here ... */ );
}
override /* ReSharper Intellisense here... */
}
在具有可覆盖成员的类中工作时,例如在Child
上面说明的类中,我通常会键入override
,Intellisense 菜单会向我显示一个有针对性的建议列表,优先考虑列表顶部类型的可覆盖成员。
在这里,ReSharper 建议了一个可覆盖成员的目标列表。
然而,在升级到 ReSharper 2018.3 后,Intellisense 菜单现在向我显示了一个通用列表,其中包含它可以想到的所有内容,从关键字列表开始。
ReSharper 在这里提出了一切建议。看到侧面的滚动条了吗?
我找到了几种解决此问题的方法,但它们都破坏了我也大量使用的其他功能。
尝试 1
如果我去ReSharper > Options > Environment > IntelliSense > General
并选择该Visual Studio
选项,则此问题已解决。但是,这打破了 Intellisense 建议 Lambda 表达式签名的方式。
这里 ReSharper 为 Lamda 表达式 (ReSharper Intellisense) 提出了一些选项。
这里 ReSharper 没有为 Lambda 表达式 (Visual Studio Intellisense) 提供任何选项。
尝试 2
如果我启用 ReSharper Intellisense(通过尝试 1 中描述的过程),而是转到ReSharper > Options > Environment > IntellSense > Completion Filters
并选择Persist filters state
选项并在子选项卡下选择Exclude
for ,这也解决了覆盖关键字问题以及 Lambda 表达式问题,但引入了另一个问题...我现在没有智能感知关键字大声笑。Keywords
C#
在这里,Intellisense 菜单不建议任何关键字,因为它们被禁用。
问题
有没有人知道在 Visual Studio 2017 / ReSharper 2018.3 中启用如上所述的可覆盖成员建议、Lambda 表达式建议和关键字建议的方法?