如何创建 C# 8.0 控制台应用程序?

Wyc*_*yck 5 c# c#-8.0

我尝试通过模板创建一个 Windows Forms .NET core 3.1 应用程序并将输出类型切换到控制台应用程序。

这是我的代码:

static class Program
{
    static void Main()
    {
        System.Console.WriteLine(0 switch { 0 => "Hello World" });
    }
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到:

错误 CS8370:功能“递归模式”在 C# 7.3 中不可用。请使用 8.0 或更高版本的语言。

我的目标是 .NET Core 3.1。我认为默认情况下这会让我获得 C# 8.0 语言功能。显然我错了。

我该怎么办?

编辑: 我使用的是 Visual Studio 2019 16.3.9

这是最让我困惑的部分,因为它说语言版本是“根据框架版本自动选择的”(我无法更改它。)我也没有看到为什么我不能的充分解释更改语言版本为什么我不能选择不同的 C# 版本?该页面说如果我使用 .NET Core 3.x,我应该使用 C# 8.0。

在此处输入图片说明

.csproj 文件如下:

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <ApplicationIcon />
    <StartupObject>Program</StartupObject>
  </PropertyGroup>

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

添加此行可解决问题:

    <LangVersion>8.0</LangVersion>
Run Code Online (Sandbox Code Playgroud)

但这真的是创建应用程序的唯一方法吗?我必须手动编辑我的 .csproj?为什么我不能更改语言版本,为什么它不会根据我使用 .NET Core 3.1 自动选择 C# 8.0?

kof*_*fus 7

打开你的 csproj,看看你是否有这样的一行

    <LangVersion>7.3</LangVersion>
Run Code Online (Sandbox Code Playgroud)

如果是,请尝试删除它,如果这不起作用,请尝试将其更改为 8.0

  • 我**没有**那一行,或者任何指定“LangVersion”的行。但如果我添加一个,并将其更改为 8.0,那么它就可以编译。所以谢谢你给我解封!但这并不能真正解释我的全部经历,即为什么我无法更改版本以及为什么没有自动检测到正确的版本。 (3认同)