2015-10-05 12 views
24

Sto usando VS 2013 con .Net Framework 4.6. Voglio utilizzare le nuove funzionalità di C# 6 (ad esempio nameof). Ma non sono riuscito a trovarlo.Il nome 'nameof' non esiste nel contesto corrente

enter image description here

Devo usare VS 2015? O superiore .Net Framework?

+0

Per quanto ne so, non è possibile utilizzare C# 6 a VS2013. È necessario eseguire l'aggiornamento al 2015 –

+0

afaik, le versioni di C# Language Feature vanno di pari passo con le versioni di Visual Studio e non vengono ripristinate. – Claies

+0

Dovresti comunque essere in grado di utilizzare .Net Framework 4.6 in Visual Studio 2013, ma come hai già risposto alla tua domanda, hai bisogno di Visual Studio 2015 per utilizzare C# 6. – Auguste

risposta

30

Sì, per utilizzare le funzionalità C# 6, è necessario un compilatore C# 6. Visual Studio 2013 non ha un compilatore C# 6. Visual Studio 2015 lo fa.

Ci sono state pre-release di Roslyn per Visual Studio 2013, ma non implementano il C# finale: in realtà non implementano tutte le funzionalità e ciò che implementano è diverso dal comportamento finale del C# 6 .

+3

Sto usando VS2015, aggiornamento 2 e I Ho appena iniziato a vedere questo problema oggi. Funzionava. EDIT: Si è scoperto che c'era uno stupido errore di sintassi nel mio programma e Visual Studio si è confuso e ha deciso che era perché 'nameof non esiste nel contesto corrente'. -- Molto strano. – BrainSlugs83

+0

@ BrainSlugs83 - è stato anche per me. Un errore di sintassi a valle (anche questo era in un metodo statico, mi chiedo se è collegato) ha causato il mancato riconoscimento di nameof(). –

3

In pre-VS2015 è possibile aggiungere la seguente classe alla soluzione e sostituire tutte le istanze di nameof( con NameOf.nameof(() => come suggerito in 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

Terribile soluzione però. – Bauss

+4

Oppure puoi comprarmi VS 2015 :) – ajeh

0
  1. In "Package Manager Console" execute "install- pacchetto Microsoft.Net.Compilers "con il tuo rispettivo progetto selezionato.
  2. Assicurarsi che "Livello lingua C#" sia "C# 6.0" nelle impostazioni del progetto.
+1

È Microsoft.Net.Compiler ** s **. Non Microsoft.Net.Compiler. (Non posso modificare la soluzione inferiore a 6 caratteri) Inoltre, dopo l'installazione, C# 6.0 non è ancora presente nell'elenco. –

2

Se si verifica questo errore in Teamcity, apportare le seguenti modifiche al passo di creazione per correggerlo.

  1. Aprire il passo MSBuild in TeamCity
  2. cambiare la versione MSBuild a Microsoft creare strumenti 2015
  3. Modificare il MSBuild ToolVersion al 14,0
Problemi correlati