Fermer

septembre 30, 2020

Conversion en WPF .NET Core


Bonne nouvelle: si vous avez attendu jusqu'à présent pour convertir vos applications Silverlight vers une autre technologie Microsoft, vous avez choisi le bon moment pour effectuer la conversion: WPF dans .NET Core est prêt à offrir à vos applications un avenir plus long.

Bien que la conversion puisse être relativement simple, voici quelques conseils pour simplifier le processus.

Vous êtes donc sur le point de recréer vos applications Silverlight dans une autre technologie avec une durée de vie plus longue. La version actuelle de .NET Core prend non seulement en charge WPF (enfin) mais rend la conversion relativement simple. Si vous tirez parti de certaines fonctionnalités de Visual Studio, vous pouvez simplifier davantage le processus.

Remarque: Cet article fait partie d'une série sur les options permettant de quitter Silverlight à l'approche de sa fin de vie. Consultez ces articles pour en savoir plus:

Prise en charge de Silverlight dans Visual Studio 2017/2019

Visual Studio 2019 prend en charge WPF dans .NET Core… mais n'ouvrira pas de projets Silverlight. Vous pourriez ouvrir votre projet Silverlight existant dans, par exemple, Visual Studio 2015 et créer votre nouveau projet WPF dans Visual Studio 2019. Basculer entre deux copies de Visual Studio n'est pas terrible mais ce n'est pas amusant non plus . Votre tâche de conversion sera considérablement plus simple si vous ouvrez les deux projets dans la même copie de Visual Studio.

C'est en fait possible dans Visual Studio 2017 ou 2019 grâce à Silverlight pour Visual Studio de Rami Abughazaleh. Vous pouvez installer cette extension Silverlight à partir du choix de menu Extensions de Visual Studio> Gérer les extensions. Une fois l'extension installée (ce qui vous obligera à arrêter et redémarrer Visual Studio), vous devez apporter une autre modification avant de pouvoir ouvrir un projet Silverlight: Dans Visual Studio, accédez au menu Outils> Options, cliquez sur le nœud Environnement, recherchez l'onglet Extensions et cochez l'option «Autoriser le chargement automatique synchrone des extensions». Vous devriez maintenant pouvoir ouvrir des projets Silverlight existants dans Visual Studio. Vous n'obtiendrez pas de concepteur visuel pour vos fichiers Silverlight XAML mais, d'un autre côté, puisque vous laissez Silverlight derrière vous, vous n'en avez pas vraiment besoin.

Avant de commencer à faire glisser des fichiers de votre ancien projet Silverlight vers votre nouveau projet WPF, faites de votre projet WPF votre projet de départ et appuyez sur F5. Vous recevrez certainement un message d'erreur indiquant que votre projet Web Silverlight ne peut pas accéder à la DLL du projet Silverlight (Windows se méfie du code exécutable qui semble être téléchargé à partir du Web, comme, par exemple, votre DLL Silverlight). Vous n'avez pas vraiment besoin du projet Web pour effectuer la conversion, la solution la plus simple à ce problème consiste donc simplement à supprimer le projet Web Silverlight de votre nouvelle solution en cliquant sur le projet dans l'Explorateur de solutions et en appuyant sur la touche Suppr.

Vous êtes prêt à commencer votre conversion. Une fois votre projet Silverlight ouvert, utilisez Fichier> Nouveau> Projet pour ajouter un nouveau projet WPF à votre solution (utilisez le modèle d'application WPF (.NET Core)). Une grande partie de votre conversion Silverlight peut désormais être gérée simplement en faisant glisser des fichiers et des dossiers de votre projet Silverlight vers votre projet WPF et en ajoutant des références pour les bibliothèques de classes que votre projet Silverlight utilise à votre nouveau projet WPF. Vous constaterez, par exemple, que le concepteur visuel XAML de votre nouveau projet WPF fonctionne très bien.

Prise en charge de WCF dans Visual Studio 2017/2019

Il est cependant possible (même probable) que votre application Silverlight est suffisamment ancien pour qu'il utilise WCF pour accéder aux services Web. En supposant que vous n'allez pas réécrire ces services Web de manière REST, vous souhaiterez ajouter des références de service pour ces bibliothèques à votre projet WPF. La bonne nouvelle est que vous pouvez le faire dans Visual Studio 2017 et 2019, bien que le processus soit légèrement différent dans les deux versions.

Pour commencer à vous connecter à votre service WCF, cliquez avec le bouton droit de la souris sur votre projet WPF et, à partir du menu contextuel, sélectionnez Ajouter> Service connecté pour ouvrir l'éditeur de services de connexion. Sous l'en-tête Autres services, vous devez trouver le fournisseur de référence de service Web Microsoft WCF (Visual Studio 2017 peut ne pas avoir l'en-tête Autres services mais doit avoir le fournisseur de référence). Cliquez sur le fournisseur de référence pour ouvrir une boîte de dialogue d'apparence familière qui devrait vous permettre de vous connecter à votre service Web WSDL / SOAP existant.

Conversion de XAML

Vous pouvez maintenant commencer à faire glisser des fichiers et des dossiers de votre projet Silverlight vers votre projet WPF. Ce que vous ne ne voulez pas faire, c'est apporter des modifications à votre application Silverlight de base qui, je suppose, a cette fonctionnalité «fonctionnelle» que les utilisateurs aiment tant (l'une des fonctionnalités intéressantes de la prise en charge de Visual Studio pour glisser-déposer entre les projets signifie que les fichiers sont copiés plutôt que déplacés, laissant votre projet Silverlight intact).

Je vous recommande (au moins, initialement) de faire glisser les combinaisons de fichiers .xaml / .xaml.cs sur une à une heure et à l'aide de la fonctionnalité Rechercher et remplacer de Visual Studio pour convertir les espaces de noms des anciens fichiers Silverlight en espace de noms dans votre nouveau projet WPF. Assurez-vous simplement de définir la portée de vos modifications sur le projet actuel (votre projet WPF) plutôt que sur la solution entière (encore une fois, l'objectif est de laisser le projet Silverlight d'origine inchangé).

Vous pouvez maintenant décider de la quantité de travail que vous souhaitez pour investir dans la conversion de vos UserControls Silverlight. Vous pouvez, par exemple, pointer simplement votre fichier App.xaml vers le Silverlight UserControl qui est le point de départ de votre application (dans App.xaml, définissez simplement l'attribut StartupUri sur l'élément Application sur le nom de fichier de votre Silverlight UserControl initial). Cela se traduit par une barre de titre légèrement étrange qui comprend des boutons avant et arrière pour la fenêtre de votre application, mais réduit les modifications nécessaires au système de navigation de votre Silverlight.

Vous pouvez également ajouter vos contrôles utilisateur Silverlight à WPF Windows pour en obtenir plus. interface utilisateur native. L'ajout d'un UserControl peut être aussi simple que l'exemple suivant, qui ajoute un Silverlight UserControl (appelé MySilverlightUserControl) à une fenêtre WPF (appelée MyWpfWindow) dans un projet avec l'espace de noms MyWpfApplication:

 <Window x: Class = "MyWpfApplication.MyWpfWindow "
xmlns =" ​​http://schemas.microsoft.com/winfx/2006/xaml/presentation "
xmlns: x =" http://schemas.microsoft.com/winfx/2006/xaml "
xmlns: d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns: mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns: local = "clr-namespace: MyWpfApplication"
mc: Ignorable = "d"
Title = "MainWindow" Height = "450" ​​Width = "800">



[19659021] Bien que cela vous donne une interface WPF plus «native», cela vous donne également deux fois plus de fichiers que nécessaire, car chaque fichier XAML Silverlight / UserControl va avoir une correspondance fichier WPF / Window XAML). Vous avez une autre option: vous pouvez convertir vos UserControls Silverlight en Windows WPF «natives» en modifiant le nom de l’élément UserControl en Window. Les attributs par défaut entre WPF Windows et Silverlight UserControls sont presque identiques (et les différences ne semblent pas avoir d'importance).

Vous aurez bien sûr beaucoup plus à faire (vous voudrez probablement revoir votre navigation système, par exemple). Mais vous travaillez maintenant dans un environnement à peu près aussi convivial que possible pour la conversion.





Source link

septembre 30, 2020