Une mise à jour des versions C # et des outils C #

À partir de Visual Studio 2019 Preview 4 et RC, nous ajusterons la façon dont les versions C # sont traitées dans les outils .NET. En savoir plus ci-dessous <cut>.


Résumé des changements


Premièrement, nous ajoutons deux nouvelles valeurs de version de langue ( LangVersion ): LatestMajor et Preview . Voici comment ils se comparent à la liste de valeurs actuellement prise en charge:

LangversionSignification
LatestMajorDernière version majeure prise en charge du langage C #
AperçuDernière version disponible du langage C #
DernierDernière version prise en charge du langage C # (y compris la version mineure)
ISO-1C # 1.0 / 1.2
ISO-2C # 2.0
3C # 3.0
4C # 4.0
5C # 5.0
6C # 6.0
7C # 7.0
7.1C # 7.1
7.2C # 7.2
7.3C # 7.3
8.0C # 8.0

Lorsqu'aucune LangVersion n'est spécifiée, la signification par défaut est désormais déterminée par le cadre cible de votre projet. Lorsque vous ciblez un framework d'aperçu qui possède également une version C # d'aperçu correspondante, cette version d'aperçu est la version par défaut. Si vous ne ciblez pas un framework d'aperçu, alors Dernier est choisi.


Expérience lorsque C # 8.0 est en aperçu


Les scénarios suivants expliquent comment la version C # par défaut sera interprétée alors que C # 8.0 est toujours en aperçu.


Cibler l'aperçu netcoreapp3.0 ou l'aperçu netstandard2.1


La version linguistique par défaut choisie dans ce scénario est Aperçu . Les fonctionnalités C # 8.0 auxquelles vous avez accès sont entièrement basées sur la version du compilateur (et donc du SDK .NET) que vous utilisez. Lorsque vous utilisez les aperçus futurs, vous pouvez obtenir plus de fonctionnalités (ou légèrement peaufinées). Lorsque vous créez un projet, le SDK .NET émet un avertissement indiquant que tout cela est toujours en aperçu.


Cibler .NET Framework


La version linguistique par défaut choisie dans ce scénario est la plus récente. Toute utilisation d'une fonctionnalité C # 8.0 est une erreur de compilation. Les outils Visual Studio vous proposeront une solution rapide qui peut modifier la version linguistique du projet ou de la solution lorsqu'une de ces erreurs se produit. Étant donné que certaines fonctionnalités nécessitent des types sous-jacents ou des fonctionnalités d'exécution qui ne sont pas disponibles sur le .NET Framework, tels que les membres d'interface par défaut, vous pouvez toujours obtenir une erreur pour ces fonctionnalités lors du ciblage de .NET Framework.


Aperçu multi-ciblage netcoreapp3.0 ou aperçu netstandard2.1 et .NET Framework


Pour les cibles de prévisualisation netcoreapp3.0 / netstandard2.1 , la version linguistique est Aperçu . Un avertissement est émis lors de la construction à partir du SDK .NET. Pour la cible .NET Framework, la version linguistique est la plus récente.


LangVersion explicite est utilisé


Si vous définissez explicitement une valeur LangVersion, celle-ci sera respectée et le comportement par défaut mentionné précédemment est ignoré.


Expérience lorsque C # 8.0 et .NET Core 3.0 sont GA


À terme, C # 8.0 et .NET Core 3.0 seront livrés dans une version de qualité GA. Voici à quoi les valeurs LangVersion pertinentes seront mappées à ce moment:

LangversionSignification
Dernier8.0
LatestMajor8.0
AperçuPas encore déterminé

Les projets qui ne spécifient pas de LangVersion seront traités comme s'ils étaient les plus récents lorsque C # 8.0 est GA.


Si vous avez créé un projet pour l'aperçu C # 8.0 ciblant l'aperçu .NET Core 3.0 ou l'aperçu .NET Standard 2.1 et que vous n'avez pas non plus spécifié de LangVersion, ce sera comme si Latest est choisi. Vous ne serez pas activé dans Aperçu dans aucun scénario une fois que C # 8.0 et .NET Core 3.0 seront GA.


Au moment d'écrire ces lignes, il n'y a pas de plan pour un aperçu de C # lorsque C # 8.0 est GA. Finalement, un aperçu sera expédié et nous aurons un article de blog l'expliquant.


Justification


Jusqu'à ce stade, la version C # par défaut utilisée dans Visual Studio était équivalente à LatestMajor . Cela a été problématique pour deux raisons:


  1. C # évolue désormais entre les cycles de publication de Visual Studio, mais les nouveaux projets dans Visual Studio continueraient par défaut à une version plus ancienne de C #.
  2. L'aperçu C # 8.0 est un meilleur choix pour les projets qui ciblent l'aperçu .NET Core 3.0, mais il n'y avait aucun moyen d'en faire une valeur par défaut sans en faire également la valeur par défaut pour les projets qui ne ciblaient pas l'aperçu .NET Core 3.0.

Plus généralement, à mesure que nous évoluons en C # et que nous continuons à publier davantage de fonctionnalités qui s'alignent sur une future version de .NET Core, nous voulons nous assurer que vous pouvez utiliser ces fonctionnalités de la manière la plus transparente possible. Cela vous permet également d'utiliser les fonctionnalités plus tôt dans leur cycle de vie de développement, ce qui augmente la fenêtre de temps pendant laquelle des commentaires exploitables sur une fonctionnalité peuvent influencer sa conception.


Prise en charge et compatibilité des fonctionnalités d'aperçu


La façon de penser au support est également un peu différente. Pour permettre l'utilisation des fonctionnalités d'aperçu C # 8.0 dans un Visual Studio 2019 publié, les problèmes de prise en charge et de compatibilité se distinguent par l'aperçu par rapport à fonctionnalités publiées:


  • Toute fonctionnalité ou tout comportement C # 7.3 et inférieur est entièrement pris en charge et entièrement compatible. Aucun changement par rapport à ce qui existe actuellement.
  • Toute fonctionnalité d'aperçu C # 8.0 n'est pas prise en charge.
  • Il n'y a aucune garantie de compatibilité d'un aperçu C # 8.0 à un autre.

En bref, si vous utilisez l'aperçu C # 8.0 dans Visual Studio 2019, certaines fonctionnalités et certains comportements peuvent changer entre maintenant et la sortie complète de C # 8.0.


Bon piratage!

Source: https://habr.com/ru/post/fr443000/


All Articles