【发布时间】:2019-02-05 22:07:07
【问题描述】:
我最近从 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 选项并在 C# 子选项卡下为 Keywords 选择 Exclude,这还修复了覆盖关键字问题以及 Lambda 表达式问题,但引入了另一个问题……我现在没有关键字智能感知 lol。
此处,Intellisense 菜单不建议任何关键字,因为它们已被禁用。
问题
是否有人知道在 Visual Studio 2017 / ReSharper 2018.3 中启用上述可覆盖成员建议、Lambda 表达式建议和关键字建议的方法?
【问题讨论】:
-
我注意到了这个问题。我不知道这是否是一个错误 - 或者只是 JetBrains 调整了智能感知的工作方式。我已经切换到跳过'override'关键字,然后开始输入我想要覆盖的方法的名称......然后它似乎拿起它。但这并不完全是一个修复..
-
我经常遇到这样的问题,我知道有一个方法我想重写,但忘记了它的名字,所以我只需键入 override 就可以开始了。
标签: c# visual-studio visual-studio-2017 resharper resharper-2018