名称“nameof”在当前上下文中不存在

我正在使用VS 2013和.Net Framework 4.6。 我想使用新的C#6function(例如nameof )。但是我找不到它。

在此处输入图像描述

我应该使用VS 2015吗? 或者更高的.Net框架?

是的,要使用C#6function,您需要一个C#6编译器。 Visual Studio 2013没有C#6编译器。 Visual Studio 2015可以。

已经有针对Visual Studio 2013的Roslyn预发行版,但它们没有实现最终的C#6:它们实际上没有实现所有function,它们实现的function与最终的C#6行为不同。

是的,你需要使用Visual Studio 2015.它在VS 2013中不受支持。相关链接: https : //msdn.microsoft.com/en-us/library/dn986596.aspx

您将无法在VS2013中使用C#6。 编译器不会理解您尝试使用的新C#6语法。 如何将C#6.0添加到Visual Studio 2013?

在VS2015之前,您可以将以下类添加到解决方案中并替换nameof(所有实例nameof(使用NameOf.nameof(() =>如获取变量或参数的名称所示

 using System; using System.Linq.Expressions; namespace ICSharpCode.SharpZipLib { public class NameOf { public static String nameof(Expression> name) { MemberExpression expressionBody = (MemberExpression)name.Body; return expressionBody.Member.Name; } } } 

如果您在Teamcity中收到此错误,请进行以下更改以构建步骤以更正它。

  1. 在teamcity中打开MSBuild步骤
  2. 将MSBuild版本更改为Microsoft Build Tools 2015
  3. 将MSBuild ToolVersion更改为14.0

安装这个nuget包修复它为我的项目。

安装包Microsoft.CodeDom.Providers.DotNetCompilerPlatform

  1. 在“程序包管理器控制台”中,执行“install-package Microsoft.Net.Compilers”并选择相应的项目。
  2. 确保项目设置中的“C#语言级别”为“C#6.0”。