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

时间:2015-10-05 07:47:38

标签: c# visual-studio visual-studio-2013

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

enter image description here

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

7 个答案:

答案 0 :(得分:37)

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

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

答案 1 :(得分:6)

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

答案 2 :(得分:4)

您将无法在VS2013中使用C#6。编译器将无法理解您尝试使用的新C#6语法。 How can I add C# 6.0 to Visual Studio 2013?

答案 3 :(得分:4)

在VS2015之前,您可以将以下类添加到您的解决方案中,并按get name of a variable or parameter

中的建议将nameof(的所有实例替换为NameOf.nameof(() =>
using System;
using System.Linq.Expressions;

namespace ICSharpCode.SharpZipLib
{
    public class NameOf
    {
        public static String nameof<T>(Expression<Func<T>> name)
        {
            MemberExpression expressionBody = (MemberExpression)name.Body;
            return expressionBody.Member.Name;
        }
    }
}

答案 4 :(得分:2)

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

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

答案 5 :(得分:2)

安装此nuget包修复了我的项目。

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

答案 6 :(得分:0)

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