web-dev-qa-db-fra.com

Utilisation de C # 7.1 avec MSBuild

Pour utiliser les nouvelles fonctionnalités du langage - C # 7.1 avec Visual Studio 2017, vous ajoutez le paramètre <LangVersion>latest</LangVersion> à vos fichiers de projet.

Cependant, la construction de tels projets à partir de MSBuild (version 15.3.409.57025, située dans C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin) génère une erreur:

CSC : error CS1617: Invalid option 'latest' for /langversion;
must be ISO-1, ISO-2, Default or an integer in range 1 to 6.

Cette fonctionnalité n'est-elle pas encore prise en charge par MSBuild ou est-il possible de faire fonctionner cette fonctionnalité?

Cela couvre plus de 200 projets initialement créés de différentes manières dans Visual Studio 2013 et 2015. Ils ont tous été redirigés vers .NET 4.7 à l'aide de Target Framework Migrator tool (qui a enregistré lots en cliquant et apparaît - basé sur l’inspection des modifications du fichier .csproj - pour effectuer le travail correctement).

Les projets ont tous été créés avec succès à partir de Visual Studio 2017.

16
Richard Everett

Nous avons découvert que nos projets MVC étaient à l'origine de ce problème.

Pour résoudre ce problème, nous avons mis à jour le package Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet utilisé par ces projets à partir de la version 1.0.0 en 1.0.7 .

1
Richard Everett

Nuget forfaits

  • Le paquet de nuget Microsoft.Net.Compilers ne fonctionne pas et n’a pas besoin de pour être installé.

Définissez le project/build settings suivant

  • Définissez au moins C# 7.1 ou supérieur dans les propriétés de construction DebugetRelease. (via: menu Projet> Propriétés [NomProjet]> onglet Construire> bouton [Avancé]> Version linguistique).

  • La mise à la dernière version ne fonctionne pas pas

 preview

Assurez-vous également que vous utilisez la dernière version de MSBuild.

20
Dominic Jonas

Ajoutez une référence à Microsoft.Net.Compilers package (version 2.3.x, pour obtenir C # 7.1).

Une courte description du paquet :

Microsoft.Net.Compilers 

Ce paquet comprend non seulement le C # et le Compilateurs Visual Basic, il modifie également les cibles MSBuild afin que le les versions incluses du compilateur sont utilisées plutôt que n'importe quel système installé versions. Une fois installé, ce package nécessite Microsoft Build Tools 2015.

7
Julien Couvreur

Au cas où vous atterririez ici parce que vous obteniez l'erreur mentionnée dans l'OP, en exécutant msbuild via la ligne de commande (par exemple, à partir d'un agent de construction tel que jenkins), la solution peut être aussi simple que upgrade Outils de compilation Microsoft 2015.

Vous pouvez le faire via installer choco par Microsoft-build-tools ou manuellement via le Microsoft Build Tools 2015 officiel ou en mettant à jour votre installation de Visual Studio 2017.

1
firepol