Je teste Visual Studio 2015 avec C # 6.0 mais les fonctionnalités de langage ne fonctionnent pas. Dans une application Web MVC, le code suivant est compilé:
if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName))
{
// More logic here...
}
Cependant, lorsque j'exécute l'application via Debug et IIS Express, le message d'erreur suivant s'affiche:
CS1525: terme d'expression non valide '.'
Comment activer ces fonctionnalités?
Cela fonctionne dans MVC 5 (testé en 5.2.3), il vous suffit d’ajouter le paquet roslyn code dom Nuget
Fournisseurs de remplacement CodeDOM qui utilisent le nouveau compilateur .NET Compiler Platform ("Roslyn") en tant qu'API de service. Cela permet la prise en charge de nouvelles fonctionnalités linguistiques dans les systèmes utilisant CodeDOM (par exemple, la compilation d'exécution ASP.NET), ainsi que l'amélioration des performances de compilation de ces systèmes.
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
Eh bien, j'ai MVC5 et récemment installé VS 2015.
J'ai installé le paquetage de fournisseurs CodeDOM, mais ça n'a pas aidé ... Mais après, j'ai réalisé que ce paquetage ne supportait que le framework 4.5, alors que le framework cible est défini sur 4.6 pendant les tests - il fonctionne avec la version 4.5 ...
Donc, faites aussi attention au cadre cible. Si vous avez la version 4.5, installez simplement le package Microsoft.CodeDom.Providers.DotNetCompilerPlatform. Mais si vous avez 4.5.1-4.6 comme cible, vous devrez changer dans la section web.config
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">
<providerOption name="CompilerVersion" value="v4.0"/>
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
Pour C #, remplacez simplement type par:
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
J'avais ce même problème dans Visual Studio 2015. Une autre réponse ici fait allusion à la solution que j'ai utilisée, mais ils ont incorrectement spécifié le correctif et n'ont jamais donné d'éclaircissement.
Dans le menu Visual Studio, sélectionnez Projet et vous devriez voir le sous-élément Activer C # 6/VB 14 si vous rencontrez ce problème. . Sélectionnez ce sous-élément de menu. Il téléchargera les packages appropriés à partir de Nuget et les installera. Après cela, redémarrez Visual Studio et rechargez votre solution.
Je ne peux pas vérifier si cela corrigera également la sélection Propriétés du projet> Construire> Avancé> Version du langage à C # 6, vous voudrez peut-être également vérifier cela après l'activation de C # 6. du menu.
Vérifiez les propriétés de votre projet, allez à build, advanced et voyez si C # 6.0 si vous ne l'avez pas par défaut.
Actuellement, le support pour MVC5 et C # 6.0 est parfait et fonctionne à merveille!
Y compris en suivant les conseils d’installation de la dernière Microsoft.CodeDom.Providers.DotNetCompilerPlatform
, je devais également définir mon racineWeb.config
system.codedom
pour obtenir finalement toutes les erreurs de Visual Studio 2015
s'en aller:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
Maintenant, redémarrez Visual Studio
et cela devrait le faire.
Visual Studio 2015 affichera également un Enable C#6 / VB 14
dans le menu Projet avec un site Web/une application Web ASP.NET sélectionné.
Ceci installera de facto les packages Microsoft.CodeDom.Providers.DotNetCompilerPlatform
et Microsoft.Net.Compilers
dans votre projet et ajoutera les balises appropriées dans le fichier web.config.