【问题标题】:C# 7.0 language features compile error on .Net 4.x.Net 4.x 上的 C# 7.0 语言功能编译错误
【发布时间】:2017-11-03 22:58:42
【问题描述】:

我有一个项目使用.Net 4.0.(目标框架是.Net 4)。

我使用Visual Studio 2017编译源码,使用如下代码:

if(int.TryParse(inputText, out int x))
   StartAnotherMethod(x);

它在我的计算机上成功编译,所以我将它提交到存储库并等待构建服务器也编译。

令人惊讶的是,它有编译错误。

错误 CS1525:无效的表达式术语“int”

错误 CS1003:语法错误,预期为 ','

我在一个在线编译器中检查了它。它使用 .Net 4.5,也显示编译错误

https://dotnetfiddle.net/pibxC2

编译错误(第 9 行,第 32 列):无效的表达式术语 'int'

编译错误(第 9 行,第 33 列):;预计

编译错误(第 9 行,第 33 列):无效的表达式术语 ')'

编译错误(第 9 行,第 34 列):;预计

编译错误(第 9 行,第 34 列):无效的表达式术语 ')'

编译错误(第 9 行,第 35 列):;预计

正如我所读到的,语言特性不需要新的框架,所以它应该可以毫无问题地编译。

我错过了什么?

【问题讨论】:

  • 您没有使用 C# 7 的编译器。将编译器更改为 Roslyn。
  • 您的构建服务器使用哪个编译器?您需要 VisualStudio 2017 的编译器来编译您的项目。
  • 您的构建服务器使用什么编译器?这些功能取决于编译器的版本,而不是框架的版本。
  • 你做过类似c-sharpcorner.com/article/…的事情吗?
  • 转到您项目的属性并查看Build => Advanced 并将Language version 更改为C# 7.0。这将在构建机器上导致更明确的编译错误。

标签: c# c#-7.0


【解决方案1】:

您没有使用 C# 7 的编译器。将编译器更改为 Roslyn。

这里的关键是可用的语言特性是由编译器决定的,而不是目标框架。

【讨论】:

  • 这里的关键是可用的语言特性是由编译器决定的,而不是目标框架。也许您可以将其添加到答案中?
  • 如何“将编译器更改为 Roslyn”?
【解决方案2】:

试试这个

int x;
if(int.TryParse(inputText, out x))
   StartAnotherMethod(x);

【讨论】:

  • 是的,我已经知道答案了 :) 目的是使用新功能。
【解决方案3】:

这是构建服务器的编译问题。 我通过将一个语句分成两个来解决它,如下所示。

int.TryParse(input, out int value);

解决方案: int值=0; int.TryParse(input, out value);

如果允许,您可以在构建服务器上更改编译器。

【讨论】:

  • Soooo,not 使用 C# 7 功能是“解决方案”吗? :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多