【问题标题】:How to enable C# 7 features in existing projects如何在现有项目中启用 C# 7 功能
【发布时间】:2017-08-18 16:36:46
【问题描述】:

我不确定如何在现有解决方案中使用新的 C# 7 功能。我尝试在 switch 语句中使用模式匹配,但我不断收到 Value of integral type expected 错误。

有启用它的技巧吗?如果我在 VS 2017 中打开解决方案,我可以使用新功能。

我的项目针对 .net 4.6.2。

这里是示例代码

    private void CS7Test(object o)
    {
        switch (o)
        {
            case null:
                Console.WriteLine("it's a constant pattern");
                break;
            case int i:
                Console.WriteLine("it's an int");
                break;
            case UserInfo p when p.Username.StartsWith("Ka"):
                Console.WriteLine($"a Ka person {p.Username}");
                break;
            case UserInfo p:
                Console.WriteLine($"any other person {p.Username}");
                break;
            case var x:
                Console.WriteLine($"it's a var pattern with the type {x?.GetType().Name} ");
                break;
            default:
                break;
        }
    }

【问题讨论】:

  • 你能包含一些代码来演示这个错误吗?除了需要添加值元组nuget包,使用C# 7只需要在BS2017中打开它。
  • @DavidArno 添加了示例代码。
  • 项目属性 |构建 |高级... |语言版本

标签: visual-studio-2017 c#-7.0


【解决方案1】:

实际上它无需进行任何特殊配置即可工作。 Resharper 给出了这些错误,在禁用 resharper 后,它就像一个魅力。

【讨论】:

  • 是的。您可以控制每个项目使用的语言版本,但由于“默认”语言版本(大多数人默认使用)在 VS2017 中更新为 C# 7.0,它应该会自动运行。对于 C# 7.1,我们将提供灯泡体验来帮助更改语言版本(因为“默认”意味着“最新的主要版本”)。
【解决方案2】:

Vs 2017 默认配置为支持 c#7.0 并启用 Resharper。 您无需禁用它。

在 vs 2017 update 3 中,您可以将其配置为使用 c# 7.1 的新功能(并且还启用了 resharper)。

更多详情回顾:setting c#7.1 in vs2017.3

【讨论】:

  • 手动添加到.csproj 属性<LangVersion>7.1</LangVersion> 对我有用。
猜你喜欢
  • 2018-01-16
  • 2017-07-29
  • 2022-10-13
  • 2021-01-08
  • 1970-01-01
  • 2017-08-08
  • 2017-03-25
  • 2016-05-06
  • 1970-01-01
相关资源
最近更新 更多