2

我最近从 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 在 Visual Studio 模式下建议可覆盖的成员

然而,在升级到 ReSharper 2018.3 后,Intellisense 菜单现在向我显示了一个通用列表,其中包含它可以想到的所有内容,从关键字列表开始。

ReSharper 在这里提出了一切建议。看到侧面的滚动条了吗?

ReSharper 建议它可以想到的任何东西

我找到了几种解决此问题的方法,但它们都破坏了我也大量使用的其他功能。

尝试 1

如果我去ReSharper > Options > Environment > IntelliSense > General并选择该Visual Studio选项,则此问题已解决。但是,这打破了 Intellisense 建议 Lambda 表达式签名的方式。

这里 ReSharper 为 Lamda 表达式 (ReSharper Intellisense) 提出了一些选项。

ReSharper 建议了一些用于实现 Lambda 表达式的选项

这里 ReSharper 没有为 Lambda 表达式 (Visual Studio Intellisense) 提供任何选项。

ReSharper 建议一般选项,没有特定于 Lambda 表达式

尝试 2

如果我启用 ReSharper Intellisense(通过尝试 1 中描述的过程),而是转到ReSharper > Options > Environment > IntellSense > Completion Filters并选择Persist filters state选项并在子选项卡下选择Excludefor ,这也解决了覆盖关键字问题以及 Lambda 表达式问题,但引入了另一个问题...我现在没有智能感知关键字大声笑。KeywordsC#

在这里,Intellisense 菜单不建议任何关键字,因为它们被禁用。

谁仍然需要关键字

问题

有没有人知道在 Visual Studio 2017 / ReSharper 2018.3 中启用如上所述的可覆盖成员建议、Lambda 表达式建议和关键字建议的方法?

4

2 回答 2

2

在 JetBrains 的问题跟踪器上有一张为此提交的票:

https://youtrack.jetbrains.com/issue/RSRP-469670

也许如果他们看到有恼火的用户,那么修复会更快到来。

于 2019-02-07T00:43:40.400 回答
0

对我有用的是首先编写覆盖,然后删除最后一两个字母,然后 ReSharper 开始建议可覆盖的方法。

于 2019-04-08T12:48:02.180 回答