Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Chaque version du KIT de développement logiciel (SDK) Windows 10 ajoute de nouvelles fonctionnalités intéressantes dont vous souhaitez tirer parti. Toutefois, tous vos clients ne mettent pas à jour leurs appareils vers la dernière version de Windows 10 en même temps, et vous souhaitez vous assurer que votre application fonctionne sur la plus grande gamme possible d’appareils. Ici, nous vous montrons comment concevoir votre application afin qu’elle s’exécute sur des versions antérieures de Windows 10, mais tire également parti des nouvelles fonctionnalités chaque fois que votre application s’exécute sur un appareil avec la dernière mise à jour installée.
Il existe 3 étapes à suivre pour vous assurer que votre application prend en charge la plus grande gamme d’appareils Windows 10.
- Tout d’abord, configurez votre projet Visual Studio pour cibler les dernières API. Cela affecte ce qui se passe lorsque vous compilez votre application.
- Ensuite, effectuez des vérifications d’exécution pour vous assurer que vous appelez uniquement les API présentes sur l’appareil sur lequel votre application s’exécute.
- Troisièmement, testez votre application sur la version minimale et la version cible de Windows 10.
Configurer votre projet de Visual Studio
La première étape de prise en charge de plusieurs versions de Windows 10 consiste à spécifier les versions Target et Minimum prises en charge dans votre projet de Visual Studio.
- Target : la version du Kit de Développement Logiciel (SDK) que Visual Studio utilise pour compiler le code de votre application et exécuter tous les outils. Toutes les API et ressources de cette version du Kit de développement logiciel (SDK) sont disponibles dans le code de votre application au moment de la compilation.
- Minimum : la version du KIT de développement logiciel (SDK) qui prend en charge la dernière version du système d’exploitation sur laquelle votre application peut s’exécuter (et sur laquelle elle sera déployée par le store) et la version sur laquelle Visual Studio compile le code de balisage de votre application.
Pendant l’exécution, votre application s’exécute sur la version du système d’exploitation sur laquelle elle est déployée. Par conséquent, votre application lève des exceptions si vous utilisez des ressources ou appelez des API qui ne sont pas disponibles dans cette version. Nous vous montrons comment utiliser les vérifications d’exécution pour appeler les API appropriées plus loin dans cet article.
Les paramètres Cible et Minimum spécifient les extrémités d’une plage de versions du système d’exploitation/SDK. Toutefois, si vous testez votre application sur la version minimale, vous pouvez vous assurer qu’elle s’exécutera sur toutes les versions comprises entre le minimum et la cible.
Conseil / Astuce
Visual Studio ne vous avertit pas de la compatibilité des API. Il est de votre responsabilité de tester et de s’assurer que votre application s’exécute comme prévu sur toutes les versions du système d’exploitation entre et y compris le minimum et la cible.
Lorsque vous créez un projet dans Visual Studio 2015, Update 2 ou version ultérieure, vous êtes invité à définir les versions cible et minimale prises en charge par votre application. Par défaut, la version cible est la version du SDK installée la plus élevée, et la version minimale est la version minimale installée du SDK. Vous pouvez choisir Cible et Minimum uniquement à partir des versions du Kit de développement logiciel (SDK) installées sur votre ordinateur.
Nous vous recommandons généralement de conserver les valeurs par défaut. Toutefois, si vous disposez d’une préversion du SDK installé et que vous écrivez du code de production, vous devez remplacer la version cible du KIT DE développement logiciel (SDK) en préversion par la dernière version officielle du SDK.
Pour modifier la version minimale et cible d’un projet déjà créé dans Visual Studio, accédez à Project -> Properties -> Application tab -> Targeting.
Pour référence, le tableau suivant présente les numéros de build pour chaque kit SDK.
| Nom convivial | Version | Compilation du système d'exploitation/SDK |
|---|---|---|
| RTM | 1507 | 10240 |
| Mise à jour de novembre | 1511 | 10586 |
| Mise à jour anniversaire | 1607 | 14393 |
| Creators Update | 1703 | 15063 |
| Fall Creators Update | 1709 | 16299 |
| Mise à jour d’avril 2018 | 1803 | 17134 |
| Mise à jour d’octobre 2018 | 1809 | 17763 |
| Mise à jour de mai 2019 | 1903 | 18362 |
Vous pouvez télécharger n'importe quelle version publiée du SDK depuis l'archive des Kit de développement logiciel (SDK) et émulateur Windows. Vous pouvez télécharger la dernière version Windows Kit de développement logiciel (SDK) Insider Preview à partir de la section développeur du site Windows Insider.
Pour plus d’informations sur les mises à jour Windows 10, consultez Windows 10 informations de publication. Pour plus d’informations sur le cycle de vie du support Windows 10, consultez la feuille d'informations cycle de vie de Windows.
Effectuer des vérifications d’API
La clé des applications adaptatives de version est la combinaison de contrats API et de la classe ApiInformation . Cette classe vous permet de détecter si un contrat d’API, un type ou un membre spécifié est présent afin de pouvoir effectuer en toute sécurité des appels d’API sur différents appareils et versions du système d’exploitation.
Contrats d’API
L’ensemble d’API au sein d’une famille d’appareils est divisé en sous-divisions appelées contrats d’API. Vous pouvez utiliser la méthode ApiInformation.IsApiContractPresent pour tester la présence d’un contrat d’API. Cela est utile si vous souhaitez tester la présence de nombreuses API qui existent toutes dans la même version d’un contrat d’API.
bool isScannerDeviceContract_1_Present =
Windows.Foundation.Metadata.ApiInformation.IsApiContractPresent
("Windows.Devices.Scanners.ScannerDeviceContract", 1);
Qu’est-ce qu’un contrat d’API ? Essentiellement, un contrat d’API représente une fonctionnalité , un ensemble d’API associées qui fournissent ensemble certaines fonctionnalités particulières. Un contrat d’API hypothétique peut représenter un ensemble d’API contenant deux classes, cinq interfaces, une structure, deux énumérations, et ainsi de suite.
Les types liés logiquement sont regroupés dans un contrat d’API, et à partir de Windows 10, chaque API Windows Runtime est membre d’un contrat d’API. Avec les contrats d’API, vous recherchez la disponibilité d’une fonctionnalité ou d’une API spécifique sur l’appareil, en vérifiant efficacement les fonctionnalités d’un appareil plutôt que de rechercher un appareil ou un système d’exploitation spécifique. Une plateforme qui implémente une API dans un contrat d’API est nécessaire pour implémenter chaque API dans ce contrat d’API. Cela signifie que vous pouvez tester si le système d’exploitation en cours d’exécution prend en charge un contrat d’API particulier et, le cas échéant, appeler l’une des API de ce contrat d’API sans vérifier chacune individuellement.
Le contrat d’API le plus important et le plus couramment utilisé est le Windows. Foundation.UniversalApiContract. Il contient la majorité des API dans le Universal Windows Platform. La documentation sur les kits SDK d'extension pour la famille d'appareils et les contrats d’API décrit la variété des contrats d’API disponibles. Vous verrez que la plupart d’entre eux représentent un ensemble d’API fonctionnellement associées.
Note
Si vous disposez d’une préversion Windows Kit de développement logiciel (SDK) qui n’est pas encore documenté, vous trouverez également des informations sur la prise en charge du contrat d’API dans le fichier «Platform.xml» situé dans le dossier d’installation du Kit de développement logiciel (SDK) sur « (Program Files (x86))\Windows Kits\10\Plateformes<platforme><SDK version>\Platform.xml».
Code adaptatif de version et XAML conditionnel
Dans toutes les versions de Windows 10, vous pouvez utiliser la classe ApiInformation dans une condition dans votre code pour tester la présence de l’API que vous souhaitez appeler. Dans votre code adaptatif, vous pouvez utiliser différentes méthodes de la classe, telles que IsTypePresent, IsEventPresent, IsMethodPresent et IsPropertyPresent, pour tester les API à la granularité dont vous avez besoin.
Pour plus d’informations et d’exemples, consultez Code adaptatif de version.
Si la version minimale de votre application est la build 15063 (Creators Update) ou une version ultérieure, vous pouvez utiliser le XAML conditionnel pour définir des propriétés et instancier des objets dans le XAML sans avoir à utiliser le code-behind. Le code XAML conditionnel permet d’utiliser la méthode ApiInformation.IsApiContractPresent dans le balisage.
Pour plus d’informations et d’exemples, consultez XAML conditionnel.
API à chargement différé
La fonction QueryOptionalDelayLoadedAPI permet aux applications de l'application Store (qui ne sont pas autorisées par la politique à appeler LoadLibrary) de détecter si leur fonction chargée avec un délai a effectivement été trouvée.
#include <windows.h>
#include <commdlg.h>
#include <libloaderapi2.h>
#include <stdio.h>
EXTERN_C IMAGE_DOS_HEADER __ImageBase;
#define HMODULE_THISCOMPONENT reinterpret_cast<HMODULE>(&__ImageBase)
int __cdecl main(int argc, char** argv)
{
if (QueryOptionalDelayLoadedAPI(HMODULE_THISCOMPONENT,
"comdlg32.dll", "GetOpenFileNameW", 0))
{
printf("GetOpenFileNameW can be called!\n");
}
return 0;
}
Testez votre application qui s'adapte aux versions
Lorsque vous utilisez du code adaptatif de version ou du code XAML conditionnel pour écrire une application adaptative de version, vous devez la tester sur un appareil exécutant la version minimale et sur un appareil exécutant la version cible de Windows 10.
Vous ne pouvez pas tester tous les chemins de code conditionnel sur un seul appareil. Pour vous assurer que tous les chemins de code sont testés, vous devez déployer et tester votre application sur un appareil distant (ou machine virtuelle) exécutant la version minimale prise en charge du système d’exploitation. Pour plus d’informations sur le débogage à distance, consultez Déploiement et débogage d’applications UWP.