Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 名称';名称';在当前上下文中不存在_C#_Visual Studio_Visual Studio 2013 - Fatal编程技术网

C# 名称';名称';在当前上下文中不存在

C# 名称';名称';在当前上下文中不存在,c#,visual-studio,visual-studio-2013,C#,Visual Studio,Visual Studio 2013,我将VS2013与.Net Framework 4.6一起使用。我想使用新的C#6功能(例如nameof),但我找不到它 我应该使用VS 2015吗?还是更高版本的.Net Framework?是的,要使用C#6功能,您需要一个C#6编译器。Visual Studio 2013没有C#6编译器。VisualStudio2015就是这样 Roslyn已经发布了Visual Studio 2013的预发行版,但它们没有实现最终的C#6:它们实际上没有实现所有功能,而且它们所实现的与最终的C#6行为

我将VS2013与.Net Framework 4.6一起使用。我想使用新的C#6功能(例如
nameof
),但我找不到它

我应该使用VS 2015吗?还是更高版本的.Net Framework?

是的,要使用C#6功能,您需要一个C#6编译器。Visual Studio 2013没有C#6编译器。VisualStudio2015就是这样


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

是的,您需要使用Visual Studio 2015。VS 2013中不支持它。相关链接:

您将无法在VS2013中使用C#6。编译器将无法理解您尝试使用的新C#6语法。

在VS2015之前的版本中,您可以将以下类添加到解决方案中,并按照中的建议将
nameof(
的所有实例替换为
nameof.nameof(()=>

使用系统;
使用System.Linq.Expressions;
命名空间ICSharpCode.SharpZipLib
{
公共类名称
{
公共静态字符串名称(表达式名称)
{
MemberExpression expressionBody=(MemberExpression)name.Body;
返回expressionBody.Member.Name;
}
}
}
  • 在“软件包管理器控制台”中,选择相应的项目,执行“安装软件包Microsoft.Net.Compilers”
  • 确保项目设置中的“C语言级别”为“C 6.0”

  • 如果您在Teamcity中遇到此错误,请对构建步骤进行以下更改以更正此错误

  • 在teamcity中打开您的MSBuild步骤
  • 将MSBuild版本更改为Microsoft Build Tools 2015
  • 将MSBuild工具版本更改为14.0

  • 安装此nuget软件包修复了我的项目


    安装软件包Microsoft.CodeDom.Providers.DotNetCompilerPlatform

    据我所知,您不能在VS2013中使用C#6。您需要升级到2015afaik,C#语言功能版本与Visual Studio版本齐头并进,而不是后端口。您应该仍然能够在Visual Studio 2013中使用.Net Framework 4.6,但正如您所阅读的y回答了你自己的问题,你需要Visual Studio 2015才能使用C#6。不过这是一个糟糕的解决方案。或者你可以买我VS 2015:)我使用的是VS2015,更新2,我今天才开始看到这个问题。它过去是有效的。编辑:结果是我的程序中有一个愚蠢的语法错误,Visual Studio感到困惑,认为这是因为
    nameof在当前上下文中不存在
    ——非常奇怪。@brainslaugs83-对我来说也是如此。下游syntax错误(这也是一个静态方法,不知道是否相关)导致无法识别nameof()。它是Microsoft.Net.Compilers,而不是Microsoft.Net.Compiler。(我无法编辑少于6个字符的解决方案)。此外,安装后,列表中仍然不存在C#6.0。
    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;
            }
        }
    }