在 VS2017 中使用元组,构建失败但没有显示错误

Using Tuple in VS2017, build failed but show no Error

var range = (first: 1, end: 10);

当我构建项目时,错误列表中没有错误window。 但输出 window 写道:

1>....cs(41,38,41,39): error CS1026: ) expected

1>....cs(41,40,41,41): error CS1001: Identifier expected

1>....cs(41,40,41,41): error CS1002: ; expected

1>....cs(41,41,41,42): error CS1002: ; expected

1>....cs(41,41,41,42): error CS1513: } expected

========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

只有我去掉代码var range = (first: 1, end: 10);这个项目才能搭建成功

顺便说一下,我使用的是 .NET Framework 4.6.2(不是 .Net Core)并且我已经安装了包 System.ValueTuple

我通过更新包 Microsoft.Net.Compilers(至版本 2.x.x)并将配置文件 (web.config/app.config) 中的 /langversion 更改为 7 来解决此问题:

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:7 /nowarn:1659;1699;1701" />
    </compilers>
  </system.codedom> 

我遇到了同样的问题,只需更新所有 NuGet 程序包即可解决。