web-dev-qa-db-fra.com

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

A gardé cette erreur lors de l'exécution d'une nouvelle application ASP.NET MVC (tout droit sortie de VS 2015 Community) sur un ordinateur Windows 2008 Server.

76
Kyle Carlson

Il y a beaucoup de gens qui courent dessus, alors je voulais poster ici.

J'ai trouvé une solution de contournement facile grâce à ce gars: Expertdebugger .

Il vous suffit de rétrograder votre version linguistique de C 6 à C 5, comme suit:

<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.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+”>
          <providerOption name=”CompilerVersion” value=”v4.0″/>
      </compiler>
    </compilers>
  </system.codedom>

Modifiez le langversion:6 vers le bas de 6 à 5 - langversion:5

Corrigé pour moi. Merci lui.

94
Kyle Carlson

Si vous souhaitez utiliser C # 6.0:

  1. Assurez-vous que la version .NET de votre projet est supérieure à 4.5.2.
  2. Ensuite, vérifiez votre fichier .config pour effectuer les modifications suivantes.

Recherchez le system.codedom et modifiez-le afin qu'il ressemble à l'illustration ci-dessous:

<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>
73
chsword

Dans mon cas, j'utilisais le mauvais fichier MSBuild.exe, celui trouvé dans:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

Pour résoudre cette erreur, j'ai mis à jour ma variable d'environnement PATH afin de commencer à utiliser Visual Studio 2017 MSBuild.exe:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSbuild.exe

Veuillez consulter ce lien pour plus de détails: Erreur CS1056: caractère inattendu '$' lors de l'exécution de msbuild sur un processus d'intégration continue tfs

8
user8128167

J'ai trouvé que la cause directe de l'erreur dans mon cas était:

build -> advanced -> language version

cela a du sens puisque l'erreur indique qu'il existe une option invalide pour la langue.

mais cela fonctionnait bien avant - donc il a dû être sélectionné. Qu'est ce qui a changé? s'avère qu'un membre de mon équipe est passé à la version 2017, alors que j'utilisais encore 2015. après avoir modifié le projet, la version linguistique a été modifiée et j'ai reçu ce changement de contrôle de code source. mais la version sélectionnée n'était pas disponible pour ma version de vs, elle était donc vide - d'où l'erreur. après avoir sélectionné une valeur dans la liste déroulante de la langue (j'ai choisi la valeur par défaut), une nouvelle erreur est apparue. la nouvelle erreur provoquait un échec de génération sur les lignes de code utilisant la version la plus récente de c #. J'ai changé le code pour exécuter les mêmes fonctions, mais avec la syntaxe et le problème résolus de ma version c #.

ainsi, alors que la cause directe de l'erreur était bien une sélection non valide de Version linguistique, la cause fondamentale était due au conflit de différentes versions de vs/c #.

7
Heriberto Lugo

Dans mon cas, l'erreur était:

Erreur CS1617 Option non valide 'dernière mise à jour' pour/langversion; doit être ISO-1, ISO-2, Par défaut ou un entier compris entre 1 et 6.

J'ai ouvert mon fichier .csproj avec le bloc-notes et j'ai vu cette ligne:

<PropertyGroup>
    <LangVersion>latest</LangVersion>
</PropertyGroup>

J'ai changé le dernier pour un entier compris entre 1 et 6

<LangVersion>6</LangVersion>

L'erreur a disparu!

6
nahuelmisc

Au lieu de changer la version de langue de 6 à 5, modifiez l'attribut "type" de la balise du compilateur de

Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

à

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

Mettez à niveau le package Microsoft.Net.Compilers Nuget vers la dernière version (au moins 2.x).

2
wnbates

J'ai juste changé le langversion en default et cela a fonctionné pour moi. VS 2015

<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:default /nowarn:1659;1699;1701″>
    <providerOption name=”CompilerVersion” value=”v4.0″/>
  </compiler>
  <compiler language=”vb;vbs;visualbasic;vbscript” extension=”.vb” type=”Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+”>
      <providerOption name=”CompilerVersion” value=”v4.0″/>
  </compiler>
</compilers>
0
Kumar

La solution la plus simple pour moi était la mise à niveau des compilateurs .Net via le gestionnaire de packages.

Package d'installation Microsoft.Net.Compilers

puis en modifiant les lignes Web.Config à cette

        <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>
0
Mike

J'ai mis à jour Microsoft.Net.Compilers vers la version 2.0 ou supérieure

voir ceci

0
davcup

dans ce cas, essayez d'utiliser vs 2019, j'espère avoir de l'aide

0