C# 名称';名称';在当前上下文中不存在
我将VS2013与.Net Framework 4.6一起使用。我想使用新的C#6功能(例如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行为
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;
}
}
}
如果您在Teamcity中遇到此错误,请对构建步骤进行以下更改以更正此错误
安装此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;
}
}
}