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.
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=\"Web\" /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.
Si vous souhaitez utiliser C # 6.0:
.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=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
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
J'ai trouvé que la cause directe de l'erreur dans mon cas était:
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 #.
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!
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
Mettez à niveau le package Microsoft.Net.Compilers Nuget vers la dernière version (au moins 2.x).
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=\"Web\" /optionInfer+”>
<providerOption name=”CompilerVersion” value=”v4.0″/>
</compiler>
</compilers>
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=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
J'ai mis à jour Microsoft.Net.Compilers vers la version 2.0 ou supérieure
dans ce cas, essayez d'utiliser vs 2019, j'espère avoir de l'aide