web-dev-qa-db-fra.com

Relation entre C # 8.0, NET Core 3.0 et Visual Studio

L'article Building C # 8. déclare

Le plan actuel est que C # 8.0 sera livré en même temps que .NET Core 3.0. Cependant, les fonctionnalités commenceront à prendre vie avec les aperçus de Visual Studio 2019 sur lesquels nous travaillons.

Quelle est la relation entre C # 8.0, NET Core 3.0 et Visual Studio?

À titre de suivi, je suis également confus quant à ce qu'est réellement une nouvelle version linguistique en termes de déploiement physique. S'agit-il de nouveaux assemblys déployés dans le cadre d'un nouveau déploiement de Visual Studio, ou d'une partie d'une installation net core sdk ou autre chose? C # 8 doit-il être ajouté à la fois au framework complet et à .NET Core?

14
kimsagro

Mise à jour après la sortie de .NET Core 3

Certaines fonctionnalités ajoutées dans C # 8.0 nécessitent .NET Core 3.0, elles ont donc une relation plus étroite que C # /. NET auparavant. La paire peut être acquise en tant que charge de travail via VS, mais gardez à l'esprit que C # 8.0 et .NET Core 3.0 ne nécessitent pas VS; vous pouvez les utiliser dans d'autres IDE.

Le document versioning du langage C # décrit les relations langage/.NET plus en détail.

Pour certains détails pragmatiques, vous pouvez lire comment cibler C # 8.0 dans Visual Studio .

Ancienne réponse

Jetez un œil à ne mise à jour des versions C # et des outils C # , qui fournit un bon aperçu du langage en ce qui concerne les projets dans Visual Studio.

En particulier,

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 générez un projet, le SDK .NET émet un avertissement indiquant que tout cela est toujours en aperçu.

En réponse à

Quelle est la relation entre C # 8.0, NET Core 3.0 et Visual Studio?

La relation entre le langage, le SDK et la version de Visual Studio est beaucoup plus lâche qu'auparavant. Le langage peut évoluer indépendamment de .NET dans n'importe laquelle de ses incarnations. Cela ne veut pas dire que ce sera toujours vrai. Visual Studio est également indépendant du langage et du framework. Si vous jetez un œil au programme d'installation de Visual Studio, vous verrez que la langue et la prise en charge .NET sont des "charges de travail" qui peuvent être installées. Le SDK expose les fonctionnalités du langage et VS propose l'outillage.

Si vous optez pour VS 2017 pour l'instant, jetez un œil à

À titre de suivi, je suis également confus quant à ce qu'est réellement une nouvelle version linguistique en termes de déploiement physique

C'est le SDK qui contient le compilateur qui peut créer les assemblys à partir de la source C # 8.0.

S'agit-il de nouveaux assemblys déployés dans le cadre d'un nouveau déploiement de Visual Studio, d'une partie d'une installation net core sdk ou d'autre chose?

Une partie du SDK, voir ci-dessus. Cela signifie que rien n'est "déployé" en plus de votre code. Votre code, quelle que soit la version, cible une version de .NET. Cela dit, la version ciblée de .NET doit exister sur la machine ou le conteneur.

C # 8 doit-il être ajouté à la fois au framework complet et à .NET Core?

Il n'a pas "besoin d'être ajouté". Les versions les plus récentes de ce framework (4.8) et du SDK (.NET Core 3.0) sont prises en charge par C # 8.0.

7
Kit

Le langage C # comprend une spécification ainsi que le compilateur de référence appelé Roslyn.

Une version .Net (4.8 ou .net Core 3) représente le framework (un ensemble d'API) qui se trouve au sommet d'un runtime managé (le CLR) qui exécute le programme compilé (en langage intermédiaire, un type de code Assembly).

Alors qu'idéalement, le langage C # serait indépendant de la plate-forme et indépendant du cadre et de l'exécution, au cours de l'histoire de C #, plusieurs fonctionnalités de langage pivot ont été conçues où les versions actuelles du CLR ne permettaient pas la fonctionnalité, ou la fonctionnalité était basée sur les types de niveau supérieur et les ajouts de framework (par exemple Async-Await en C # 5, et la valeur des tuples dans une certaine mesure en C # 7).

Avec C # 8, les fonctionnalités de langage telles que les flux et les plages Async nécessitent de nouveaux types de frameworks qui n'existent pas de la même manière dans les versions actuelles/antérieures des frameworks. Les nouveaux membres d'interface par défaut nécessitent des modifications CLR. En tant que telles, ces fonctionnalités de langage (la syntaxe) ne seront pas compilées avec les versions antérieures du framework et du CLR.

Contrairement aux itérations de langues précédentes, Microsoft ne publie pas ces exigences dans la nouvelle version .Net Framework version 4.8. Au lieu de cela, ils poussent .Net Core 3.0 comme plate-forme de référence, leur permettant potentiellement d'itérer plus rapidement à l'avenir.

En ce qui concerne Visual Studio, alors que vous pourriez écrire du code en C # 8 dans une version antérieure de IDE et le compiler avec le runtime .Net Core 3.0, vous perdriez une quantité importante d'outils, de simplicité et d'expérience pour les développeurs.

Étant donné que les déploiements de framework et de langage ne sont pas parfaitement synchronisés, l'utilisation des aperçus de Visual Studio fournit (principalement) des versions de framework et de langage compatibles pour tester les nouvelles fonctionnalités des deux.

Une bonne référence est la section "Dépendances de la plate-forme" dans le blog Building C # 8. .

Modifier:

Pour répondre à la question du commentaire 'Comment est installé C # 8': Le langage spec est implémenté et livré sous forme de compilateur (Roslyn). Veuillez consulter le Roslyn GitHub repository qui décrit comment le compilateur est construit, publié et installé - avec ou sans installation spécifique de Visual Studio.

7
Andrew Hanlon

Il existe deux façons de compiler le C # 8.0:

  • Utilisez le prochain Visual Studio avec un compilateur Roslyn qui le comprend. (par exemple Visual Studio 2019)
  • Installez le SDK .NET Core autonome (3.0.0 lorsqu'il est disponible) et appelez "dotnet build"

Désormais, la construction pour .NET Core 3.0.0 nécessitera l'installation du même SDK.

La construction de .NET 4.8 nécessite l'installation du SDK .NET Full Framework 4.8.

Les deux SDK seront probablement livrés avec Visual Studio 2019 ou vous devrez les installer plus tard pour pouvoir cibler ces frameworks.

Donc: - C # -> compilateur Roslyn

  • runtime -> SDK correspondant

Petit addenda: En regardant la prise en charge des nouvelles fonctionnalités en C #, apparemment Microsoft ne rendra pas le framework .NET complet (4.8 et ultérieur) .NET Standard 2.1 compatible. Seul .NET Core continuera d'évoluer à l'avenir.

3
Schwarzie2478