Come abilitare la funzionalità C # 6.0 in Visual Studio 2013?


201

Stavo esaminando le ultime funzionalità introdotte in C # 6.0 e ho appena seguito un esempio di inizializzatore automatico delle proprietà,

class NewSample
{
    public Guid Id { get; } = Guid.NewGuid();
}

ma il mio IDE non ha riconosciuto la sintassi.

Mi chiedo come potrei abilitare C # 6.0 in Visual Studio 2013. Il framework di destinazione che sto usando è 4.5.1.


7
Non credo che sia possibile nel 2013. Guarda invece su CTP VS 14 o sull'anteprima di VS 2015.
Jeroen Vannevel,

Bene, avresti bisogno dell'ultimo compilatore, che non fa parte di VS 2013, quindi non credo sia possibile.
Rufus L

2
bene, sto solo cercando di scoprire se ms rilascia qualche aggiornamento o no
Hassaan,

1
@PauloMorgado Cosa significa "che" in "quella versione non è aggiornata"? 4.5.1, VS2013 o VS2014CTP?
ProfK,

2
Potete per favore aggiornare la risposta a questa domanda a @Deef
Chris Marisic,

Risposte:


64

Informazioni per software pre-release obsoleto:

Secondo questo è solo un'installazione e scegli Visual Studio 2013:

In effetti, l'installazione del compilatore C # 6.0 da questa versione implica poco più che l'installazione di un'estensione di Visual Studio 2013, che a sua volta aggiorna i file di destinazione di MSBuild.

Quindi basta ottenere i file da https://github.com/dotnet/roslyn e sei pronto per partire.

Devi sapere che è una versione obsoleta delle specifiche implementate lì, poiché non aggiornano più il pacchetto per Visual Studio 2013 :

Puoi anche provare l'anteprima dell'utente finale di aprile, che si installa su Visual Studio 2013. (nota: questa anteprima di VS 2013 è abbastanza obsoleta e non è più aggiornata)

Quindi, se si desidera utilizzare l'ultima versione, è necessario scaricare Visual Studio 2015 .


7
sfortunatamente, l'anteprima dell'utente finale per vs 2013 è stata chiusa :(
Hassaan,

4
Solo per essere sicuri, non esiste un modo supportato per scrivere in C # 6 usando VS 2013? Devo usare VS 2015?
Vorou,

2
È corretto. @vorou ​​Non esiste una versione recente dell'anteprima per VS 2013.
Patrick Hofman,

5
In realtà, questo è un modo (vedi la mia risposta). Ma è diverso da quello che potresti fare mesi fa prima del rilascio finale.
David De Sloovere,

1
nessuna delle soluzioni in questo argomento o in altri argomenti simili mi ha aiutato. quindi credo che l'unica soluzione sia passare a VS 2015.
Anno

177

Sotto VS2013 è possibile installare i nuovi compilatori nel progetto come pacchetto nuget . In questo modo non è necessario VS2015 o un server di build aggiornato.

https://www.nuget.org/packages/Microsoft.Net.Compilers/

Install-Package Microsoft.Net.Compilers

Il pacchetto consente di utilizzare / creare codice / sintassi C # 6.0. Poiché VS2013 non riconosce in modo nativo la nuova sintassi di C # 6.0, mostrerà errori nella finestra dell'editor del codice sebbene si costruisca bene .

Usando Resharper, otterrai linee ondulate sulle funzionalità di C # 6, ma la lampadina ti dà la possibilità di 'Abilitare il supporto C # 6.0 per questo progetto' (impostazione salvata in .DotSettings).

Come accennato da @ stimpy77: per il supporto nelle viste MVC Razor avrai bisogno di un pacchetto aggiuntivo (per coloro che non leggono i commenti)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Se si desidera il supporto completo per C # 6.0, è necessario installare VS2015.


8
I costruttori primari sono stati effettivamente rimossi dalla versione finale. Ecco perché non funzionano.
Mark A. Donohoe,

8
Voglio solo far notare a chiunque voglia usare C # 6 in Razor in un progetto MVC5, sembra che sia un pacchetto NuGet separato e richiesto anche se stai usando VS2015. Vedi stackoverflow.com/a/30832849/11398
Jon Davis

2
Funziona (come in è possibile compilare), tuttavia VS2013 ancora mostra gli errori: stackoverflow.com/questions/35796001/...
mnwsmit

2
lui lui lui. Questo è stato bello. Il compilatore mostra gli errori in anticipo ma si compila correttamente quando effettivamente compilato. Che trucco iniziare una mattina di fine settimana!
RBT,

1
mostrerà errori nella finestra dell'editor del codice, anche se andrà bene. Ho appena sentito il bisogno di puntarlo di nuovo. Bella risposta!
meJustAndrew

5

Un sacco di risposte qui sono stati scritti prima Roslyn (open-source .NET C # e compilatori VB) di trasferirsi a .NET 4.6. Quindi non ti aiuteranno se il tuo progetto ha come target, ad esempio, 4.5.2 come il mio (ereditato e non può essere modificato).

Ma puoi prendere una versione precedente di Roslyn da https://www.nuget.org/packages/Microsoft.Net.Compilers e installarla invece dell'ultima versione. Ho usato 1.3.2. (Ho provato 2.0.1 - che sembra essere l'ultima versione eseguita su .NET 4.5 - ma non sono riuscito a compilarlo *.) Eseguilo dalla console di Package Manager in VS 2013:

PM> Install-Package Microsoft.Net.Compilers -Version 1.3.2

Quindi riavviare Visual Studio. Inizialmente ho avuto un paio di problemi; è necessario ripristinare la versione C # predefinita (C # 6.0 non viene visualizzato nell'elenco delle versioni ma sembra essere stato impostato come predefinito), quindi pulire, salvare, riavviare VS e ricompilare.

È interessante notare che non ho riscontrato errori IntelliSense a causa delle funzionalità di C # 6.0 utilizzate nel codice (che erano in primo luogo il motivo per volere C # 6.0).

* versione 2.0.1 ha generato l' errore L'attività "Microsoft.CodeAnalysis.BuildTasks.Csc non può essere caricata dall'assembly Microsoft.Build.Tasks.CodeAnalysis.dll. Impossibile caricare il file o l'assemblaggio" Microsoft.Build.Utilities.Core, versione = 14.0.0.0, Cultura = neutro, PublicKeyToken = b03f5f7f11d50a3a "o una delle sue dipendenze. Il sistema non è in grado di trovare il file specificato. Confermare che la dichiarazione sia corretta, che l'assemblaggio e tutte le sue dipendenze siano disponibili e che l'attività contenga un classe pubblica che implementa Microsoft.Build.Framework.ITask.

AGGIORNAMENTO Una cosa che ho notato da quando ho pubblicato questa risposta è che se modifichi un codice durante il debug ("Modifica e continua"), ti accorgerai che il tuo codice C # 6.0 apparirà all'improvviso come errori in ciò che sembra tornare a un ambiente pre-C # 6.0. Ciò richiede un riavvio della sessione di debug. MOLTO fastidioso soprattutto per le applicazioni web.


@RichBianco È fantastico - grazie per il feedback e il voto positivo. Personalmente, non riesco a capire perché la v2.0.1 non funzioni. Se qualcuno ha qualche indizio a riguardo - come in, sbarazzarsi dell'errore che ho segnalato - si prega di pubblicare la correzione.
SteveCinq,

4

Vale la pena ricordare che il tempo di costruzione sarà aumentato per gli utenti di VS 2015 dopo :

Install-Package Microsoft.Net.Compilers

Coloro che utilizzano VS 2015 e devono conservare questo pacchetto nei loro progetti possono correggere i tempi di costruzione .

Modifica il file packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.propse puliscilo. Il file dovrebbe apparire come:

<Project DefaultTargets="Build" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

Ciò costringe un progetto a essere costruito com'era prima di aggiungere un Microsoft.Net.Compilerspacchetto


2

È possibile utilizzare le funzionalità complete di C # 6.0 in Visual Studio 2013 se si dispone di Resharper.
Devi abilitare Resharper Build e voilá! In Opzioni di Resharper -> Build - abilita Build di Resharper e in "Usa versione MSBuild.exe" scegli "Ultimi installati"

In questo modo Resharper costruirà i tuoi progetti C # 6.0 e non sottolineerà il codice C # 6.0 come non valido.

Lo sto usando anche se ho Visual Studio 2015 perché:

  1. Test di unità in Resharper non funzionano per me con Visual Studio 2015 per qualche motivo
  2. VS 2015 utilizza molta più memoria rispetto a VS 2013.

Lo sto mettendo qui, poiché stavo cercando una soluzione a questo problema da qualche tempo e forse aiuterà qualcuno.


-1

Sembra che ci siano dei malintesi. Quindi, invece di provare a patchare VS2013, ecco e rispondi da un ragazzo di Microsoft: https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c- 60-mai-essere-supported-by-vs-2013? forum = Roslyn

Quindi, per favore, leggilo e installa VS2015.


1
il link mi dà 'non autorizzato' anche dopo ms login. Naturalmente, installare VS2015 o versione successiva è una spesa di £ XXX, 000s in alcune impostazioni.
Chris F Carroll,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.