内联变量声明不编译

Inline variable declaration not compiling

我在 Visual Studio 2017 年收到了一条消息,具体来说,IDE0018 Variable declaration can be inlined.

所以我尝试按照 visual studio 2017 发行说明中提到的方式使用内联变量声明,但我无法编译我的项目。

它没有显示任何错误消息,但输出显示“Rebuild All failed..... error CS1525: Invalid expression term 'int'

错误仅显示在输出中,而不是错误列表中的实际错误。

这是我正在使用的失败代码的实际示例。

if (int.TryParse(ExpYear, out int IExpYear))
  {
    if (IExpYear < DateTime.Now.Year || IExpYear > DateTime.Now.AddYears(10).Year)
    {
      e += "Expiration Year is invalid.\n";
    }
  }
  else
  {
    e += "Expiration Year is not a number.\n";
  }

如果我还原更改,它会按预期进行编译。有没有可能我没有使用 c#7 编译器?

谢谢。

更新:我在Build > Advanced中找到了语言设置,并将其设置为C# 7.0。现在构建项目给我这个错误:

CSC : error CS1617: Invalid option '7' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6.

我能够通过为 v2.0.0-rc3 安装 Microsoft.Net.Compilers nuget 包来解决这个问题,之前安装的唯一版本是 1.3 .2

我仍然不明白如果安装的编译器不支持这个,为什么会出现智能感知和编译器错误。

如果上面的答案对你不起作用,因为它对我不起作用,请执行以下操作:

打开csproj文件,查看升级后文件中是否引用了以下包,如果有,请移除。

<Import Project="packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" />

接下来,检查"Project ToolsVersion"。它必须是 15.0,但可能是 14.0,所以你必须改变它。

<Project ToolsVersion="15.0" .../>

然后只需重新加载解决方案即可。请注意,如果您 select "Reload Project" 它会给您一个错误并且不会加载它。

设置使用最新发布的 C# 编译器:

在Visual Studio中(我用的是Visual Studio 2017),右击项目然后select "Properties"

Select 左侧菜单栏中的 "Build" 选项卡

点击"Build"window

右下角的"Advanced..."按钮

在 "Language Version" 右侧列表框中的 "General," 下,select "C# latest minor version (latest)"

此外,确保使用 Visual Studio 安装程序使 Visual Studio IDE 保持最新。