内联变量声明未编译

时间:2017-01-24 21:12:30

标签: c# .net-core visual-studio-2017 c#-7.0

我在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&gt;中找到了语言设置。高级并将其设置为C#7.0。现在构建项目会给我这个错误:

  

CSC:错误CS1617:/ langversion的选项'7'无效;必须是ISO-1,ISO-2,Default或1到6范围内的整数。

3 个答案:

答案 0 :(得分:37)

我能够通过为 v2.0.0-rc3 安装Microsoft.Net.Compilers nuget软件包解决此问题,之前安装的唯一版本是 1.3.2

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

答案 1 :(得分:14)

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

打开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')" />

接下来,检查&#34; Project ToolsVersion&#34;。它必须是15.0,它可能是14.0,所以你必须改变它。

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

然后只需重新加载解决方案就可以了。请注意,如果您选择&#34;重新加载项目&#34;它会给你一个错误而不加载它。

答案 2 :(得分:0)

要设置使用最新发布的C#编译器,请执行以下操作:

在Visual Studio中,(我正在使用Visual Studio 2017),右键单击项目并选择“属性”

选择左侧菜单栏中的“构建”标签

点击“构建”窗口右下角的“高级...”按钮

在“常规”下的“语言版本”右侧的列表框中,选择“ C#最新次要版本(最新)”

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