Comment activer la fonctionnalité C # 6.0 dans Visual Studio 2013?

201

Je parcourais les dernières fonctionnalités introduites dans C # 6.0 et je viens de suivre un exemple d'initialisation automatique des propriétés,

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

mais mon IDE n'a pas reconnu la syntaxe.

Je me demande comment je pourrais activer C # 6.0 dans Visual Studio 2013. Le cadre cible que j'utilise est 4.5.1.

Hassaan
la source
7
Je ne pense pas que ce soit possible en 2013. Regardez plutôt VS 14 CTP ou l'aperçu VS 2015.
Jeroen Vannevel
Eh bien, vous auriez besoin du dernier compilateur, qui ne fait pas partie de VS 2013, donc je ne pense pas que ce soit possible.
Rufus L
2
eh bien, je cherche juste à savoir si ms publie une mise à jour ou non
Hassaan
1
@PauloMorgado Que signifie "cela" dans "cette version est obsolète"? 4.5.1, VS2013 ou VS2014CTP?
ProfK
2
Pouvez-vous mettre à jour la réponse à cette question à @Deef
Chris Marisic

Réponses:

64

Informations sur les versions préliminaires obsolètes:

Selon cela, c'est juste une installation et c'est parti pour Visual Studio 2013:

En fait, l'installation du compilateur C # 6.0 à partir de cette version implique un peu plus que l'installation d'une extension Visual Studio 2013, qui à son tour met à jour les fichiers cibles MSBuild.

Il suffit donc de récupérer les fichiers sur https://github.com/dotnet/roslyn et vous êtes prêt à partir.

Vous devez savoir qu'il s'agit d'une version obsolète des spécifications implémentées, car ils ne mettent plus à jour le package pour Visual Studio 2013 :

Vous pouvez également essayer l'aperçu de l'utilisateur final d'avril, qui s'installe au-dessus de Visual Studio 2013. (Remarque: cet aperçu VS 2013 est assez obsolète et n'est plus mis à jour)

Donc, si vous souhaitez utiliser la dernière version, vous devez télécharger Visual Studio 2015 .

Patrick Hofman
la source
7
malheureusement, l'aperçu de l'utilisateur final pour vs 2013 a été fermé :(
Hassaan
4
Juste pour être sûr, il n'y a pas de moyen pris en charge pour écrire en C # 6 à l'aide de VS 2013? Dois-je utiliser VS 2015?
vorou
2
C'est exact. @vorou ​​Il n'y a pas de version récente de l'aperçu pour VS 2013.
Patrick Hofman
5
En fait, c'est un moyen (voir ma réponse). Mais c'est différent de ce que vous pouviez faire il y a des mois avant la sortie finale.
David De Sloovere
1
aucune des solutions de ce sujet ou d'autres sujets similaires ne m'a aidé. donc la seule solution consiste à passer à VS 2015, je suppose.
Yar
177

Sous VS2013, vous pouvez installer les nouveaux compilateurs dans le projet sous forme de package de nuget . De cette façon, vous n'avez pas besoin de VS2015 ou d'un serveur de build mis à jour.

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

Install-Package Microsoft.Net.Compilers

Le package vous permet d'utiliser / construire du code / syntaxe C # 6.0. Parce que VS2013 ne reconnaît pas nativement la nouvelle syntaxe C # 6.0, il affichera des erreurs dans la fenêtre de l'éditeur de code bien qu'il se construise correctement .

En utilisant Resharper, vous obtiendrez des lignes ondulées sur les fonctionnalités C # 6, mais l'ampoule vous donne l'option `` Activer la prise en charge C # 6.0 pour ce projet '' (paramètre enregistré sur .DotSettings).

Comme mentionné par @ stimpy77: pour le support dans les vues MVC Razor, vous aurez besoin d'un package supplémentaire (pour ceux qui ne lisent pas les commentaires)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Si vous souhaitez une prise en charge complète de C # 6.0, vous devrez installer VS2015.

David De Sloovere
la source
8
Les constructeurs principaux ont en fait été supprimés de la version finale. Voilà pourquoi ils ne fonctionnent pas.
Mark A. Donohoe
8
Je veux simplement signaler à toute personne souhaitant utiliser C # 6 dans Razor dans un projet MVC5, il s'agit d'un package NuGet distinct, et requis même si vous utilisez VS2015. Voir stackoverflow.com/a/30832849/11398
Jon Davis
2
Cela fonctionne (comme dans vous pouvez compiler), mais VS2013 affiche toujours des erreurs: stackoverflow.com/questions/35796001/…
mnwsmit
2
il il il. C'était cool. Le compilateur affiche les erreurs à l'avance mais se compile correctement lorsqu'il est réellement compilé. Quel hack pour commencer un week-end le matin!
RBT
1
il affichera des erreurs dans la fenêtre de l'éditeur de code bien qu'il se construise correctement. Je ressentais juste le besoin de le pointer à nouveau. Très bonne réponse!
meJustAndrew
5

Beaucoup de réponses ici ont été écrites avant Roslyn (les compilateurs open-source .NET C # et VB) ne passe à .NET 4.6. Donc, ils ne vous aideront pas si votre projet cible, disons, 4.5.2 comme le mien (hérité et ne peut pas être modifié).

Mais vous pouvez récupérer une version précédente de Roslyn sur https://www.nuget.org/packages/Microsoft.Net.Compilers et l'installer à la place de la dernière version. J'ai utilisé 1.3.2. (J'ai essayé 2.0.1 - qui semble être la dernière version qui s'exécute sur .NET 4.5 - mais je n'ai pas pu le compiler *.) Exécutez cela à partir de la console du gestionnaire de packages dans VS 2013:

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

Redémarrez ensuite Visual Studio. J'ai eu quelques problèmes au début; vous devez rétablir la version C # par défaut (C # 6.0 n'apparaît pas dans la liste des versions mais semble avoir été par défaut), puis nettoyer, enregistrer, redémarrer VS et recompiler.

Fait intéressant, je n'ai pas eu d'erreurs IntelliSense en raison des fonctionnalités C # 6.0 utilisées dans le code (qui étaient la raison de vouloir C # 6.0 en premier lieu).

* la version 2.0.1 a généré une erreur La tâche "Microsoft.CodeAnalysis.BuildTasks.Csc n'a pas pu être chargée à partir de l'assembly Microsoft.Build.Tasks.CodeAnalysis.dll. Impossible de charger le fichier ou l'assembly 'Microsoft.Build.Utilities.Core, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'ou l'une de ses dépendances. Le système ne trouve pas le fichier spécifié. Confirmez que la déclaration est correcte, que l'assembly et toutes ses dépendances sont disponibles et que la tâche contient un classe publique qui implémente Microsoft.Build.Framework.ITask.

MISE À JOUR Une chose que j'ai remarquée depuis la publication de cette réponse est que si vous modifiez un code pendant le débogage ("Modifier et continuer"), vous aimerez constater que votre code C # 6.0 apparaîtra soudainement comme des erreurs dans ce qui semble revenir à un environnement pré-C # 6.0. Cela nécessite un redémarrage de votre session de débogage. TRÈS ennuyeux surtout pour les applications web.

SteveCinq
la source
@RichBianco C'est super - merci pour la rétroaction et le vote positif. Personnellement, je ne comprends pas pourquoi la v2.0.1 ne fonctionne pas. Si quelqu'un a des indices à ce sujet - comme pour se débarrasser de l'erreur que j'ai signalée - veuillez publier votre correctif.
SteveCinq
4

Il convient de mentionner que le temps de construction sera augmenté pour les utilisateurs de VS 2015 après :

Install-Package Microsoft.Net.Compilers

Ceux qui utilisent VS 2015 et doivent conserver ce package dans leurs projets peuvent corriger l'augmentation du temps de construction .

Modifier le fichier packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.props et nettoyez-le. Le fichier doit ressembler à:

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

Cela oblige à construire un projet tel qu'il était avant d'ajouter un Microsoft.Net.Compilerspackage

Ashot Muradian
la source
2

Il est possible d'utiliser les fonctionnalités C # 6.0 complètes dans Visual Studio 2013 si vous disposez de Resharper.
Vous devez activer Resharper Build et voilá! Dans les options Resharper -> Build - activez Resharper Build et dans "Use MSBuild.exe version" choisissez "Latest Installed"

De cette façon, Resharper va construire vos projets C # 6.0 et ne soulignera pas non plus le code C # 6.0 comme non valide.

J'utilise également cela même si j'ai Visual Studio 2015 car:

  1. Les tests unitaires dans Resharper ne fonctionnent pas pour moi avec Visual Studio 2015 pour une raison quelconque
  2. VS 2015 utilise beaucoup plus de mémoire que VS 2013.

Je mets cela ici, car je cherchais une solution à ce problème depuis un certain temps maintenant et peut-être que cela aidera quelqu'un d'autre.

devdimi
la source
-1

Il semble qu'il y ait un malentendu. Donc, au lieu d'essayer de corriger VS2013, voici la réponse d'un gars de Microsoft: https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c- 60-ever-be-supported-by-vs-2013? Forum = roslyn

Alors, lisez-le et installez VS2015.

Alexander Christov
la source
1
le lien me donne «non autorisé» même après la connexion ms. Bien sûr, l'installation de VS2015 ou version ultérieure est une dépense de XXX 000 £ dans certains paramètres.
Chris F Carroll,