2015-10-05 515 views
24

我使用VS 2013和.Net Framework 4.6。我想使用新的C#6功能(例如nameof),但我找不到它。名稱'nameof'在當前上下文中不存在

enter image description here

我應該使用VS 2015年?或更高的.Net框架?

+0

據我所知,你不能使用C#6 VS2013。您將需要升級到2015年的 – 2015-10-05 07:49:37

+0

afaik,C#語言功能版本與Visual Studio版本攜手並進,並且不會被反向移植。 – Claies

+0

您應該仍然可以在Visual Studio 2013中使用.Net Framework 4.6,但是如果您已經回答了您自己的問題,則需要使用Visual Studio 2015才能使用C#6. – Auguste

回答

30

是的,要使用C#6功能,您需要一個C#6編譯器。 Visual Studio 2013沒有C#6編譯器。 Visual Studio 2015確實如此。

已經有Visual Studio 2013的Roslyn預發佈版,但是他們沒有實現最終的C#6:他們實際上並沒有實現所有的功能,他們的實現與最終的C#6行爲不同。

+3

我正在使用VS2015,更新版本2和I今天剛剛開始看到這個問題。它曾經工作。編輯:原來我的程序中有一個愚蠢的語法錯誤,並且Visual Studio感到困惑,並決定這是因爲'nameof在當前上下文中不存在'。 - 很奇怪。 – BrainSlugs83

+0

@ BrainSlugs83 - 對我來說也是如此。下游語法錯誤(這也是一個靜態方法,不知道是否與之相關)導致nameof()無法識別。 –

3

在預VS2015你可以在下面的類添加到您的解決方案,並與NameOf.nameof(() =>取代的nameof(所有實例,如get name of a variable or parameter

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; 
     } 
    } 
} 
+1

雖然可怕的解決方案。 – Bauss

+4

或者你可以買我VS 2015 :) – ajeh

0
  1. 建議在「包管理器控制檯」執行「install-打包Microsoft.Net.Compilers「,並選擇相應的項目。
  2. 確保項目設置中的「C#語言級別」爲「C#6.0」。
+1

這是Microsoft.Net.Compiler ** s **。不是Microsoft.Net.Compiler。 (我不能編輯6個字符以下的解決方案) 此外,安裝後C#6.0仍然不存在於列表中。 –

2

如果您在Teamcity中出現此錯誤,請進行以下更改以構建步驟進行更正。

  1. 在TeamCity的打開你的MSBuild步
  2. 更改MSBuild的版本,微軟構建工具2015年
  3. 更改的MSBuild ToolVersion至14.0
相關問題