Utiliser Visual Studio pour développer des XAML universal apps
Session originale : Using Visual Studio to build XAML universal apps
Cette session parle de la convergence des applications Windows 8.1 et Windows Phone 8.1, notamment au travers de l’outil de prédilection des développeurs : Visual Studio.
Universal Apps, qu’est-ce que c’est ?
Les Universal Apps supportent C#, C++ et Javascript, accompagnés de leurs chouchous respectifs pour l’interface : XAML et HTML/CSS.
Différents moyens pour créer un projet universel :
- Depuis zéro en partant d’un project template
- Migration de Windows 8.1 ou WP 8 .1 vers des Universal Apps
Les templates de projet Visual Studio sont maintenant bien séparés en :
- Universal Apps
- Windows Apps
- Windows Phone Apps
Démo : création d’un nouveau projet universal
Lorsqu’on choisit de créer une nouvelle solution de type Universal Apps, 3 projets sont créés :
- *.Windows : projet spécifique à Windows 8.1
- *.WindowsPhone : projet spécifique à Windows Phone 8.1 (Silverlight)
- *.Shared : composants partagés entre Windows et Phone 8.1
Le projet Shared supporte tous les types de fichier habituels d’un projet XAML. : page XAML, user control, resource dictionary, resource file, etc.
Pour partager quoi ? UserControls, DataTemplates, Styles, UI, ViewModels… une partie de ce qu’on partageait avec une Portable Class Library avec en bonus tout ce qui touche à XAML et WinRT !
A noter que le projet Shared est référencé par chaque projet W8.1 ou WP8.1 mais ne génère aucune DLL. Il est en fait compilé 2 fois : une fois dans le contexte Windows 8.1, une autre fois dans le contexte Windows Phone 8.1.
Démo : migration d’un projet Windows 8.1 existant
La démo montre comment déplacer le contenu partageable d’un projet W8.1 vers le projet Shared, pour ensuite le réutiliser dans WP 8.1.
Quelques exemples d’éléments partageables :
- NavigationHelper : principes de navigation unifiés, plus simple à partager
- SuspensionManager : cycle de vie d’une app identique, donc partageable
- Images / Strings, etc.
Symboles de compilation
Nouveau symbole de combilation pour les universal apps : WINDOWS_APP / WINDOWS_PHONE_APP.
#if WINDOWS_APP
#endif
Startup project
Nouveau raccourci pour lancer un projet depuis le menu déroulant de debug :
Menu Debug > Local Machine > Startup project > démarrer Windows Phone ou Windows 8.
Intellisense
L’intellisense prévient avec une icône en forme de warning si une API est spécifique à une plateforme.
Contexte d’un fichier shared
Chaque fichier du projet Shared a un contexte Windows Phone et Windows 8, ce qui équivaut à 1 fichier compilé pour 2 targets différentes (W8.1 et WP8.1).
Lorsqu’on ouvre un fichier XAML, il est très simple de basculer du contexte Windows au contexte Phone, via un simple menu déroulant.
Navigation bar en XAML
Nouveau menu pour naviguer directement vers un élément graphique de l’arborescence, ou une propriété d’un élément.
Blend for Visual Studio
- Blend supporte également les Universal Apps ! Seule différence : pour changer de contexte d’application, il faut aller dans le menu Device. Il n’y a pas de menu déroulant raccourci comme sous Visual studio.
- Support des guides qu’on peut également exporter dans un fichier.
Réutilisation de code
Shared project vs Portable Class Library
Toutes les Class Library sont maintenant des Portable Class Library, semble-t-il. Les PCL sont d’ailleurs compatibles avec WinRT si on coche uniquement Win8.1 et WP8.1.
A noter que côté Shared Project, on ne peut référencer aucune DLL. Pour référencer une DLL quelconque, il faut le faire dans les projets “hôtes”, à savoir Win8.1 et WP8.1, et non le Shared. Un peu déroutant au début …
Par exemple, pour référencer MVVM Light Toolkit et l’utiliser dans le Shared, il faut ajouter la référence aux projets Windows 8.1 et Windows Phone 8.1.
Preview XAML
Preview du design pour toutes les résolutions depuis le panel Device.
La couleur d’accentuation peut être modifiée en live également, le thème, etc.
En résumé
- Visual Studio 2013 Update 2 évolue et nous propose une expérience nouvelle pour les Universal Apps
- Les nouveaux projets Shared permettent de partager du XAML et du WinRT entre Win8.1 et WP8.1
- On peut facilement basculer de contexte entre Windows et Phone
- Les PCL sont toujours là, bien que les Shared Projects soient privilégiés dans les scénarios Windows 8.1 et Windows Phone 8.1