.NET Core 3 pour Windows Desktop

En septembre, nous avons publié la prise en charge de .NET Core pour la création d'applications de bureau Windows, y compris WPF et Windows Forms. Depuis lors, nous avons été heureux de voir de nombreux développeurs partager leurs histoires sur le portage d'applications de bureau vers .NET Core. Nous entendons constamment des histoires de développeurs .NET d'applications de bureau Windows sur la façon dont ils prennent en charge leur entreprise avec WPF et Windows Forms, en particulier lorsque le bureau gagne, notamment:

  • Applications FOD (formulaires sur données) avec une interface utilisateur dense
  • Interface utilisateur réactive et à faible latence
  • Applications qui doivent fonctionner hors ligne
  • Applications avec dépendances sur les pilotes de périphériques personnalisés

Jetez un œil pour en savoir plus sur les avantages de .NET Core pour la création d'applications Windows.



Pourquoi le bureau Windows sur .NET Core?


.NET Core (et à l'avenir .NET 5, construit sur la base de .NET Core) deviendra l'avenir de .NET. Nous nous efforçons de prendre en charge le .NET Framework aussi longtemps que possible, mais il ne recevra pas de nouvelles fonctionnalités, elles seront ajoutées uniquement à .NET Core (et, finalement, .NET 5). Pour améliorer les piles de bureaux Windows et permettre aux développeurs de bureaux .NET de bénéficier de toutes les futures mises à jour, nous avons introduit Windows Forms et WPF pour .NET Core. Elles continueront d'être des technologies Windows uniquement, car elles sont étroitement liées aux API Windows. Mais .NET Core, en plus de multiplateforme, possède de nombreuses autres fonctionnalités qui peuvent améliorer les applications de bureau.

Tout d'abord, toutes les améliorations d'exécution et les fonctionnalités de langage seront ajoutées uniquement dans .NET Core, et à l'avenir dans .NET 5. Un bon exemple ici est C # 8, qui est devenu disponible dans .NET Core 3.0. De plus, les versions .NET Core de Windows Forms et WPF feront partie de la plate-forme .NET 5. Et, en portant votre application sur .NET Core, vous la préparez pour .NET 5.

En outre, .NET Core offre une flexibilité de déploiement pour vos applications avec de nouvelles options non disponibles dans le .NET Framework, telles que:

  • Déploiement parallèle Vous pouvez désormais disposer de plusieurs versions de .NET Core sur un même ordinateur et choisir la version sur laquelle chacune de vos applications doit se concentrer.
  • Déploiement hors ligne. Vous pouvez déployer la plate-forme .NET Core avec vos applications et devenir complètement indépendant de l'environnement de l'utilisateur final - votre application dispose de tout ce dont vous avez besoin pour fonctionner sur n'importe quel ordinateur Windows.
  • Tailles d'application plus petites. Dans .NET Core 3, nous avons introduit une nouvelle fonctionnalité appelée l'éditeur de liens (parfois aussi appelé trimmer) qui analysera votre code et inclura dans un déploiement autonome uniquement les assemblys de .NET Core nécessaires à votre application. Ainsi, tous les détails de la plateforme qui ne sont pas utilisés dans votre cas seront supprimés.
  • Fichiers .exe uniques. Vous pouvez regrouper votre application et votre plateforme .NET Core dans un seul fichier .exe.
  • Amélioration des performances d'exécution. .NET Core propose de nombreuses optimisations de performances par rapport au .NET Framework. Si vous vous souvenez de l'historique de .NET Core, qui a été créé à l'origine pour les charges de travail sur le Web et le serveur, cela aide à comprendre si votre application peut bénéficier des avantages notables de l'optimisation de l'exécution. En particulier, les applications de bureau qui dépendent fortement des E / S de fichiers, de la mise en réseau et des opérations de base de données sont susceptibles d’améliorer les performances de ces scénarios. Certains domaines dans lesquels vous ne remarquerez peut-être pas de modifications importantes sont liés aux performances de rendu de l'interface utilisateur ou d'exécution d'applications.

En définissant les propriétés <PublishSingleFile> , <RuntimeIdentifier> et <PublishTrimmed> dans le profil de publication, vous pouvez déployer l'application autonome rognée en tant que fichier .exe unique, comme illustré dans l'exemple ci-dessous.

 <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <PublishSingleFile>true</PublishSingleFile> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <PublishTrimmed>true</PublishTrimmed> </PropertyGroup> 

Différences entre le bureau .NET Framework et le bureau .NET Core


Lors du développement d'applications de bureau, vous ne remarquerez pas de grande différence entre les versions de WPF et de Windows Forms pour .NET Framework et .NET Core. Une partie de nos efforts a consisté à fournir des similitudes fonctionnelles entre ces plates-formes de bureau et à améliorer l'avenir de .NET Core.

Les applications WPF sont entièrement prises en charge dans .NET Core, et vous pouvez commencer à travailler avec elles pendant que nous travaillons sur des mises à jour et des améliorations mineures. Pour Windows Forms, le runtime a été complètement porté sur .NET Core et l'équipe travaille actuellement sur le concepteur Windows Forms. Nous prévoyons de le préparer pour le quatrième trimestre 2020, mais pour l'instant, vous pouvez vérifier la version préliminaire du concepteur dans Visual Studio 16.4 Preview 3 ou version ultérieure. N'oubliez pas de cocher la case sous Outils-> Options-> Aperçu des fonctionnalités-> Utiliser l'aperçu du concepteur Windows Forms pour les applications .NET Core et redémarrer Visual Studio. Veuillez garder à l'esprit que l'expérience d'utilisation est encore limitée, car le travail est toujours en cours.

Changements importants


Il y a eu quelques changements majeurs dans .NET Framework et .NET Core, mais la plupart du code lié aux zones Windows Forms et WPF a été porté sur Core de la même manière. Si vous avez déjà utilisé des composants tels que WCF Client, Code Access Security, App Domains, Interop et Remoting, vous devrez refactoriser le code si vous souhaitez passer à .NET Core.

Une chose à garder à l'esprit: les chemins de sortie par défaut dans .NET Core sont différents des chemins dans .NET Framework, donc si votre code a des hypothèses sur la structure de fichiers / dossiers de l'application en cours d'exécution, il tombera probablement au moment de l'exécution.

Des modifications ont également été apportées à la configuration des fonctions .NET. Au lieu d'utiliser le fichier machine.config , le .NET Core utilise le fichier <something>.runtimeconfig.json fourni avec l'application et a le même objectif principal et des informations similaires. Certaines configurations, telles que system.diagnostics , system.net ou system.servicemodel , ne sont pas prises en charge, de sorte que le fichier de configuration d'application ne peut pas être chargé s'il contient l'une de ces sections. Cette modification s'applique au suivi System.Diagnostics et aux scripts client WCF qui étaient précédemment généralement configurés à l'aide de la configuration XML. Dans .NET Core, vous devez les configurer à la place dans le code. Pour modifier le comportement sans recompiler, pensez à configurer les types de trace et WCF à l'aide de valeurs téléchargées à partir d'une source Microsoft.Extensions.Configuration ou à partir de appSettings .

Vous pouvez trouver plus d'informations sur les différences entre .NET Core et .NET Framework dans la documentation .

Pour commencer


Découvrez ces courts didacticiels:


Portage du .NET Framework vers le .NET Core


Tout d'abord, démarrez l' analyseur de portabilité (analyseur de portabilité) et, si nécessaire, mettez à jour le code pour garantir une compatibilité à 100% avec .NET Core. Voici les instructions d'utilisation de l'analyseur de portabilité. . Nous vous recommandons d'utiliser le contrôle de code source ou de faire une sauvegarde de votre code avant d'apporter des modifications à votre application, au cas où le refactoring échouerait comme vous le souhaitez, et vous décidez de revenir à votre état d'origine.

Lorsque votre application est entièrement compatible avec .NET Core, vous serez prêt à la porter. Comme point de départ, vous pouvez essayer l'outil que nous avons créé pour aider à automatiser la conversion de vos projets .NET Framework en .NET Core - essayez de convertir .

Il est important de se rappeler que cet outil n'est qu'un point de départ dans votre parcours vers .NET Core. En outre, ce n'est pas un produit Microsoft pris en charge. Bien qu'il puisse vous aider avec certains des aspects mécaniques de la migration, il ne traitera pas tous les scénarios ou types de projet. S'il y a des projets dans votre solution que l'outil rejette ou ne peut pas convertir, vous devrez les transférer manuellement. Ne vous inquiétez pas, nous avons préparé de nombreuses leçons sur la façon de procéder (à la fin de l'article).

L'outil de conversion tentera de transférer les fichiers de projet de style ancien vers le nouveau style SDK et de reconfigurer les projets correspondants dans .NET Core. Pour vos bibliothèques, nous vous laissons le choix de la plateforme: .NET Core ou .NET Standard. Vous pouvez en spécifier un dans le fichier de projet en mettant à jour la valeur de <TargetFramework> . Les bibliothèques sans dépendances spécifiques à .NET Core, telles que WPF ou Windows Forms, peuvent bénéficier du choix de .NET Standard:

 <TargetFramework>netstandard2.1</TargetFramework> 

afin qu'ils puissent être utilisés par les appelants ciblant de nombreuses plates-formes .NET différentes. D'un autre côté, si la bibliothèque utilise une fonction qui nécessite .NET Core (par exemple, l'API d'interface utilisateur de bureau Windows), la bibliothèque doit se concentrer sur .NET Core:

 <TargetFramework>netcoreapp3.0</TargetFramework> 

try-convert est un outil global que vous pouvez installer sur votre ordinateur puis appeler depuis la CLI:

 C:\> try-convert -p <path to your project> 

ou

 C:\> try-convert -w <path to your solution> 

Comme mentionné précédemment, si l'outil try-convert ne fonctionne pas dans votre cas, voici les informations sur la façon de porter l'application manuellement.

Vidéo


La documentation




Voir aussi: 7 cours gratuits pour les développeurs

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


All Articles