在 Visual Studio 中支持 C# 9.0
Support for C# 9.0 in Visual Studio
如何在 C# 9.0 中打开对 records 关键字的支持?
当我尝试使用新的 record
关键字(或 init
)时,我得到一个 意外标记 错误 Visual Studio.
我错过了什么?或者 Visual Studio 16.8 不支持 C# 9.0?
public record Person
{
public string? FirstName { get; init; }
public string? LastName { get; init; }
}
Update: Just read the marked answer. The information below ended up not being important for this problem and is here just for documentation purposes.
我在项目文件中使用 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>
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]
证明它是 运行 .NET 5.
因此,为了确保它确实是 运行 .NET 5,我创建了一个路径来输出 .NET 运行时版本。看起来真的是 运行 .NET 5.
您的语法不正确,这就是您定义 class 的方式。
要创建该记录,您可以将所有内容替换为 public record Person(string? FirstName, string? LastName);
确保以 .Net 5 框架为目标。
C# 9.0 is supported on .NET 5. For more information, see C# language versioning.
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9
分析了错误消息的加载时间并在 Rider IDE 中收到相同的错误消息后,我得出结论,它必须是 Resharper。
我卸载了 Resharper,错误消息消失了。
更新
Resharper 2020.3 和 Rider 2020.3 现已发布,正式支持 .NET 5 和 C# 9。
您需要使用 ReSharper 2020.3 才能与 .NET 5 和 C# 9.0 一起使用。
如何在 C# 9.0 中打开对 records 关键字的支持?
当我尝试使用新的 record
关键字(或 init
)时,我得到一个 意外标记 错误 Visual Studio.
我错过了什么?或者 Visual Studio 16.8 不支持 C# 9.0?
public record Person
{
public string? FirstName { get; init; }
public string? LastName { get; init; }
}
Update: Just read the marked answer. The information below ended up not being important for this problem and is here just for documentation purposes.
我在项目文件中使用 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>
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]
证明它是 运行 .NET 5.
因此,为了确保它确实是 运行 .NET 5,我创建了一个路径来输出 .NET 运行时版本。看起来真的是 运行 .NET 5.
您的语法不正确,这就是您定义 class 的方式。
要创建该记录,您可以将所有内容替换为 public record Person(string? FirstName, string? LastName);
确保以 .Net 5 框架为目标。
C# 9.0 is supported on .NET 5. For more information, see C# language versioning.
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9
分析了错误消息的加载时间并在 Rider IDE 中收到相同的错误消息后,我得出结论,它必须是 Resharper。
我卸载了 Resharper,错误消息消失了。
更新
Resharper 2020.3 和 Rider 2020.3 现已发布,正式支持 .NET 5 和 C# 9。
您需要使用 ReSharper 2020.3 才能与 .NET 5 和 C# 9.0 一起使用。