ReSharper 2020.2.4 在 C# 9.0 记录类型上失败

7

我在控制台应用程序中使用新的record功能。我正在使用我的VS Community 16.8.0 + R# 2020.2.4试用版。

C#代码

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            var test = new Person("firstname", "lastname");
            Console.WriteLine($"test.FirstName: {test.FirstName} test.LastName: {test.LastName}");
        }
    }

    public record Person(string FirstName, string LastName);
}

Csproj 文件

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

</Project>

这段代码可以编译并运行。

C# 9.0 record issue

问题

然而,IntelliSense不能识别记录本身。VS会对记录定义进行下划线,并且尽管程序本身可以编译,但不会识别其使用。

我做错了什么?

Intellisense fails

注意

VS可以以某种方式识别记录定义/使用中的拼写错误。

Typo is recognised


那个红色的高亮似乎是ReSharper的问题。当您禁用ReSharper时是否有类似的问题? - György Kőszeg
我尝试禁用R#,但是我在VS设置中找不到这个选项了。 - KUTlime
2
"我做错了什么?" -- 期望Resharper在记录功能发布后立即完全支持它吗?对我来说,问题无法重现;在我的VS2019 16.8标准安装中,Intellisense可以正常工作,包括Person类型中的所有内容。我无法证明这个问题与Resharper有关,但很可能是这样。 - Peter Duniho
如果你想同时使用新的C# 9语法位和Resharper,Resharper 2020.3早期访问是你唯一的选择。没错,你所展示的问题是Resharper引起的,而非Visual Studio。 - Lasse V. Karlsen
我以前从未遇到过与R#和新功能相关的问题。至少从五月份开始就有记录了。 - KUTlime
2个回答

7

ReSharper 2020.2.4不支持新的C# 9特性。请尝试使用最新版本(2020.3)。如有其他问题,请直接联系JetBrains。


这对我有用。请记住,如果您选择使用 EAP 并且处于团队环境中,则团队中的每个人都必须启用 EAP,否则您将会看到一些团队成员在您的新“记录”下面出现红色波浪线时感到困惑。作为替代方案,在非 EAP RE# 中与新的 C# 9 功能隔离使用,您可以在文件顶部添加// ReSharper disable All,当然,您将失去所有带有新 C# 9 的文件的 RE# 帮助,但这可能比强制所有人使用 EAP 更好。 - Adam Diament
1
@AdamDiament - ReSharper 2020.3 已经发布了,所以您和您的团队都可以升级到最新版本。 - Piers Myers

6

我也有同样的“问题”,应该这么说吧?

ReSharper仍然无法处理记录类型,对于 ReSharper 来说,记录类型依旧不给力。只要这个问题存在,我就不能在定义或使用记录类型的类中使用 ReSharper。太多的虚假错误信息。根据文件开关 ReSharper 真是让人烦透了,这导致 ReSharper 大部分时间都处于未激活状态。该死,为什么这会发生。我也完全卸载了与 ReSharper 相关的一切并重新安装了干净的版本,但新版仍然出现同样的结果。C#(预览版)已经可以使用几个月了,他们仍然未能解决。哇。

@KUTlime 转到“扩展”菜单并选择 ReSharper,然后转到“选项...”。第二种方法是右键单击右下角的黑色圆圈,然后单击“自定义...”,你就可以去那里了。

编辑:升级到 2020.3 EAP7(早期访问预览版)为我解决了这个问题(预览版比以前慢)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接