Packages facultatifs avec code exécutable

Les packages facultatifs sont utiles pour diviser une application complexe ou volumineuse, ou pour ajouter de nouveaux composants à une application déjà publiée. Avec Visual Studio 2017, version 15.7 et .NET Native 2.1, vous pouvez charger un code exécutable à partir des packages facultatifs en C++ et C#.

Prérequis

  • Visual Studio 2019 ou Visual Studio 2017 (version 15.7 ou ultérieure)
  • Windows 10, version 1709 ou ultérieure
  • SDK Windows 10, version 1709 ou ultérieure

Pour obtenir les derniers outils de développement, consultez Téléchargements et outils pour Windows 10.

Remarque

Pour soumettre une application qui utilise des packages facultatifs et/ou des jeux associés au Windows Store, vous aurez besoin d’autorisation. Les packages facultatifs et les ensembles associés peuvent être utilisés pour les applications métier ou d’entreprise sans autorisation de l’Espace partenaires s’ils ne sont pas soumis à Windows Store. Pour obtenir l’autorisation de soumettre une application utilisant des packages facultatifs et des jeux connexes, consultez le Support technique pour les développeurs Windows.

Remarque

Les packages facultatifs contenant du code exécutable doivent faire partie d’un ensemble associé. Vous ne serez pas en mesure d’exécuter du code à partir d’un package facultatif, sauf s’il fait partie d’un ensemble associé.

Packages facultatifs C++ avec code exécutable

Pour charger du code à partir d’un package facultatif C++, consultez le référentiel OptionalPackageSample sur GitHub. OptionalPackageDLL montre comment créer un projet avec du code qui peut être exécuté à partir du package principal. Le projet MyMainApp montre comment charger du code à partir du fichier OptionalPackageDLL.dll.

Packages facultatifs C# avec code exécutable

Pour commencer à créer un package de code facultatif en C#, suivez les étapes ci-dessous pour configurer votre solution :

  1. Créez une application UWP avec la version minimale définie sur le Kit de développement logiciel (SDK) Windows 10 Fall Creators Update (build 16299) ou version ultérieure.

  2. Ajoutez un nouveau projet Facultatif Code Package (Windows universelle) à la solution. Vérifiez que la version minimale et la version cible correspondent à celle de votre application principale.

  3. Si vous envisagez d’envoyer vos applications au Windows Store, cliquez avec le bouton droit sur les deux projets et sélectionnez Store -> Associer l’application au Store...

  4. Ouvrez le fichier Package.appxmanifest de l’application principale et recherchez la valeur Identity Name. Notez cette valeur pour l’étape suivante.

  5. Ouvrez le fichier du package d’application Package.appxmanifest facultatif et recherchez la valeur uap3:MainAppPackageDependency Name. Mettez à jour la valeur uap3:MainAppPackageDependency Name pour qu’elle corresponde à la valeur Identity Name du package d’application principal de l’étape précédente.

    Voici un exemple de Identity du Package.appxmanifest de l’application principale.

    <Identity Name="12345.MainAppProject" Publisher="CN=PublisherName" Version="1.0.0.0" />
    

    Le package d’application uap3:MainPackageDependency facultatif doit être mis à jour pour correspondre à Identity de l’application principale.

    <uap3:MainPackageDependency Name="12345.MainAppProjectTest" />
    
  6. Ajoutez un fichier Bundle.mapping.txt à l’application principale. Suivez les étapes de cette section sur les Jeux connexes pour créer un ensemble associé contenant les deux applications.

  7. Générez le projet de package facultatif, puis accédez au dossier Référence du package dans la sortie de la build se trouvant à ..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference. Notez que vous pouvez choisir n’importe quelle architecture dans le chemin d’accès au dossier Référence, car le fichier .winmd (étape 8) est indépendant de l’architecture.

  8. Ajoutez une référence du projet d’application principal au fichier .winmd trouvé dans ce dossier. Chaque fois que vous modifiez la surface de l’API dans le projet de package facultatif, ce fichier .winmddoit être mis à jour. Cette référence fournit le projet d’application principal avec les informations nécessaires pour compiler.

  9. Dans le projet d’application principal, accédez aux propriétés de build du projet et sélectionnez Compiler avec la chaîne d’outils .NET Native. Actuellement, seul le débogage dans .NET Native est pris en charge pour la création facultative de package de code en C#. Accédez aux propriétés de débogage du projet et sélectionnez Déployer des packages facultatifs. Cela garantit que les deux packages sont synchronisés chaque fois que vous déployez le projet d’application principal.

Une fois ces étapes terminées, vous pouvez ajouter du code au projet de package facultatif comme s’il s’agissait d’un projet de composant WinRT géré. Pour accéder au code dans le projet d’application principal, appelez les méthodes publiques exposées dans le projet de package facultatif.