Erreur Option non valide '6' pour / langversion; doit être ISO-1, ISO-2, 3, 4, 5 ou par défaut

89

J'essaie de cibler .NET 4.6 et de profiter également de la dernière version C # en changeant la version du langage C # en 6.

Cependant, lors de la compilation, j'ai eu cette erreur:

Erreur Option non valide '6' pour / langversion; doit être ISO-1, ISO-2, 3, 4, 5 ou par défaut

Si je mets à jour le /langversion:6paramètre dans Web.Config sur 5, cela fonctionne,

  <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">

Mais comment résoudre ce problème sans recourir à une version linguistique inférieure?

J'utilise Visual Studio 2015 Community Edition et j'ai également installé .NET Framework 4.6 manuellement au cas où il n'aurait pas été installé par défaut par Visual Studio 2015.

Le projet est un projet de modèle ASP.NET MVC standard créé par Visual Studio 2015.

Rosdi Kasim
la source
1
Dans mon cas, je n'ai eu qu'à supprimer /langversion:6...
bohdan_trotsenko
@modosansreves Cela reviendra à la version de langue par défaut .. qui est C # 5 je crois ... veuillez vérifier si vous pouvez utiliser l'une des fonctionnalités du langage C # 6.
Rosdi Kasim
En effet. Cela prive d'utiliser les fonctionnalités C # 6. Merci.
bohdan_trotsenko

Réponses:

88

Faites attention au "type" du compilateur dans le Web.Configfichier, lors du changement de version du Framework:

pour 4.5 et C # 5 -

type="Microsoft.CSharp.CSharpCodeProvider...

pour 4.6 et C # 6 -

type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

Plus d'informations dans ce post de forum

DrewB
la source
20
Cela fonctionne! .. Bien que je considère cela comme un bogue dans Visual Studio 2015 pour ne pas le mettre à jour automatiquement lorsque je re-cible mon application vers .NET 4.6 et C # 6.
Rosdi Kasim
Je pense que vous avez raison. J'ai été piqué et je suis tombé sur votre question. Heureusement, le lien suivant que j'ai trouvé était la réponse.
DrewB
1
Existe-t-il un CSharpCodeProvider universel pour toutes les cibles .NET?
denfromufa
1
Mon web.config avait le type correct et la version de la langue était définie par défaut. Le <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />nettoyage de la solution et la recompilation l'ont corrigé pour moi dans VS 2019.
joym8
30

Mettez à jour les packages NuGet suivants (selon l'installation) pour résoudre le problème:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Compilateurs Microsoft.Net
Développeur
la source
c'est plus un commentaire qu'une réponse
Al Lelopath
2
C'est la vraie solution !! Désinstallez ce package nuget et le problème est résolu pour moi
Geomorillo
Je suis passé à c # 6.0, mais le package était toujours sur une version plus ancienne. La mise à jour de 1.0 à 1.0.4 a fonctionné pour moi.
Mixxiphoid
7
@AlLelopath juste parce que c'est une petite réponse n'en fait pas un commentaire. Ce petit "commentaire" a résolu le problème pour moi et pour les autres, il vaut donc mieux rester une réponse.
Shimmy Weitzhandler
14

Accédez au projet et sélectionnez les propriétés de votre projet.

2 Sélectionnez Construire et cliquez sur le bouton Avancé.

3.Sélectionnez la version par défaut de la langue.

4. Enregistrer.

https://youtu.be/IP8feQeWqkk

Prashant vishwakarma
la source
Eu cette erreur dans VS2013. Cette solution n'a malheureusement pas fonctionné pour moi.
Jviaches
2
Celui-ci a fonctionné pour moi. Toutes les autres solutions suggérées concernaient la modification du fichier web.config ou le téléchargement des packages / mises à jour NuGet. Le compilateur a continué à lancer des erreurs sur une version invalide, ce qui m'a dérouté car je n'avais pas eu ce paramètre dans le fichier de configuration. Il s'avère que les propriétés de génération avancées n'étaient pas automatiquement mises à jour par la mise à jour du package NuGet.
Kiran Ramaswamy
3

J'ai rencontré un tel comportement si le projet n'était pas entièrement mis à niveau vers VS2015. Dans le cas où vous ouvrez la solution à partir de 2015 dans VS2013 - vous obtiendrez cette erreur

Sergii Lischuk
la source
Moi aussi, je pense que cette erreur signifie essentiellement que vous devez installer VS2015! Quelqu'un d'autre sur le projet utilise des fonctionnalités de langage plus récentes que 2013 ne peut pas gérer
JonnyRaa
2

Ouvrez la console NuGet Package Manager et exécutez la commande suivante

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r

Mahfuj Ur Rahman
la source
0

Voir une réponse à l' erreur de compilation étrange ASP.NET! .

La rétrogradation de votre langage C # à 5 ne fait que masquer le problème, dès que quelqu'un utilise une fonctionnalité C # 6, votre site Web / projet se cassera et vous passerez encore du temps à le résoudre. Essayez la solution dans le lien.

PBo
la source
0

J'ai eu un problème similaire lorsque je chargeais l'application pour la première fois dans Visual Studio 2019. La mise à jour du nuget «Microsoft.CodeDom.Providers.DotNetCompilerPlatform» vers une version ultérieure a fait l'affaire pour moi.

Govind
la source