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

Ari*_*ian 31 c# visual-studio visual-studio-2013

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

在此输入图像描述

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

小智 37

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

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

  • 我正在使用VS2015,更新2,我刚刚开始看到这个问题.它曾经工作过.编辑:原来在我的程序中有一个愚蠢的语法错误,Visual Studio感到困惑,并认为这是因为`nameof在当前上下文中不存在. - 很奇怪. (6认同)

ami*_*ama 6

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


aje*_*jeh 6

在 VS2015 之前,您可以将以下类添加到您的解决方案中,并按照获取变量或参数的名称中的建议替换nameof(with 的所有实例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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 或者你可以买我 VS 2015 :) (8认同)
  • 可怕的解决方案。 (4认同)

Pau*_*ulj 6

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

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Run Code Online (Sandbox Code Playgroud)