在 Visual Studio 中支持 C# 9.0

El *_*Mac 10 c# resharper visual-studio

如何在 C# 9.0 中打开对记录关键字的支持?

当我尝试使用 newrecord关键字(或init)时,我在 Visual Studio 中收到意外的令牌错误。

我错过了什么?还是 Visual Studio 16.8 不支持 C# 9.0?

public record Person
{
    public string? FirstName { get; init; }
    public string? LastName { get; init; }
}
Run Code Online (Sandbox Code Playgroud)

错误截图


更新:只需阅读标记的答案。下面的信息最终对这个问题并不重要,这里仅用于文档目的。


我正在使用 Visual Studio 16.8,9.0在我的项目文件中将语言设置为。

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

  <PropertyGroup>
    <LangVersion>9.0</LangVersion>
    <TargetFramework>net5.0</TargetFramework>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
    <NoWarn>$(NoWarn);1591</NoWarn>
    <Nullable>enable</Nullable>
  </PropertyGroup>


  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.8" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.9">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

Visual Studio 版本

Visual Studio 版本

已安装的 SDK

2.1.2 [C:\Program Files\dotnet\sdk]
2.1.104 [C:\Program Files\dotnet\sdk]
2.1.201 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.301 [C:\Program Files\dotnet\sdk]
2.1.400 [C:\Program Files\dotnet\sdk]
2.1.508 [C:\Program Files\dotnet\sdk]
2.1.700 [C:\Program Files\dotnet\sdk]
2.1.801 [C:\Program Files\dotnet\sdk]
2.2.300 [C:\Program Files\dotnet\sdk]
3.0.100 [C:\Program Files\dotnet\sdk]
3.1.201 [C:\Program Files\dotnet\sdk]
5.0.100 [C:\Program Files\dotnet\sdk]
Run Code Online (Sandbox Code Playgroud)

证明它正在运行 .NET 5。

因此,为了确保它确实在运行 .NET 5,我创建了一个路由来输出 .NET 运行时版本。看起来它真的在运行 .NET 5。

在此处输入图片说明

El *_*Mac 22

在分析错误消息的加载时间并在 Rider IDE 中收到相同的错误消息后,我得出结论它必须是 Resharper。

我卸载了 Resharper,错误消息消失了。


更新

Resharper 2020.3 和Rider 2020.3现已发布,正式支持 .NET 5 和 C# 9。

  • 感谢您的更新。我遇到了同样的问题,但没有想到 Resharper 是原因。谁会想到他们在发布时不会支持 c# 9?不管怎样,我转向了抢先体验计划 (#7),问题得到了解决。 (2认同)