web-dev-qa-db-fra.com

Fonctionnalités C # 6.0 ne fonctionnant pas avec Visual Studio 2015

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?

133
Chris Schiffhauer

Cela fonctionne dans MVC 5 (testé en 5.2.3), il vous suffit d’ajouter le paquet roslyn code dom Nuget

Fournisseurs CodeDOM pour le compilateur .NET ...

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/

204
jbtule

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=\&quot;Web\&quot; /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" 
17
Sergey Kljopov

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.

16
Tom K

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!

14
Bart Calixto

Y compris en suivant les conseils d’installation de la dernière Microsoft.CodeDom.Providers.DotNetCompilerPlatform, je devais également définir mon racineWeb.configsystem.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=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>

Maintenant, redémarrez Visual Studio et cela devrait le faire.

9
Serj Sagan

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.

visual studio 2015 - enable cs6 snipp

6
Michal Šuvada