我在 Visual Studio 2022 中使用 ReSharper 和 GitHub Copilot 时遇到问题。这两个工具都提供代码建议,非常有用,但它们有时会发生冲突,导致代码无法使用。
- 例如,当我开始输入代码时,如果我输入字母“i”,ReSharper 会立即建议使用“if”语句。另一方面,GitHub Copilot 提供了一个完整的声明,适合我正在尝试做的事情的上下文,并且两者同时显示; ReSharper 及其上下文菜单,Copilot 及其内嵌建议。
ReSharper 建议:
if (expr)
{
}
它将插入符号移动到表达式中,以便让我填写表达式。
副驾驶建议:
if (Logger.IsDebugEnabled)
Logger.Info($"GetNearestClimate returned: {climateData}");
- 为了解决此问题并优先考虑 GitHub Copilot 建议,我已启用“在显示 GitHub Copilot 建议时禁用 ReSharper 自动完成”设置。我的期望是,当我按“Tab”键接受 GitHub Copilot 的建议时,它应该集成到我的代码中,并且 ReSharper 菜单应该关闭并且不被使用。
但是,当我按“Tab”时,问题就出现了。令人惊讶的是,ReSharper 和 GitHub Copilot 同时接受了该建议。 ReSharper 遵循其“if”语句模板,而 GitHub Copilot 则附加其部分代码,从而导致困惑的无法使用和冲突的代码。
if (expr)
{
} Logger.Info($"GetNearestClimate returned: {climateData}");
在这些情况下,我该如何确保 GitHub Copilot 的建议优先于 ReSharper 的建议。如何管理此冲突并确保 GitHub Copilot 的代码建议得到一致使用,同时仍受益于 ReSharper 的宝贵功能(例如整个上下文菜单本身)?
最好,Copilot 会在我点击“Tab”时消耗,而 ReSharper 会在我点击空格或 Enter 时消耗,就像它已经做的那样 - 所以只需禁用 ReSharper 的“Tab”功能,但是我没有成功找到这样的选项。
我已经查看了设置并尝试启用和禁用“在显示 GitHub Copilot 建议时禁用 ReSharper 自动完成”。选项。
我也尝试过研究是否可以禁用 ReSharper 的 Tab 键,但无济于事。
我非常感谢任何见解、提示或解决方法,而无需禁用功能来解决此问题。感谢您的帮助。
最佳答案
这恰好是一个已知问题 - https://youtrack.jetbrains.com/issue/RSRP-491939 。当我们致力于修复时,我建议在 ReSharper 中从 ReSharper 补全切换到 VS one |选项|环境 |智能感知 |一般。
关于c# - 同时使用 Tab 的 ReSharper 和 GitHub Copilot 自动完成之间的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77452379/