Packages facultatifs avec code exécutableOptional packages with executable code

Les packages facultatifs avec du code exécutable sont utiles pour diviser une application volumineuse ou complexe, ou pour ajouter à une application qui a déjà été publiée.Optional packages with executable code are useful for dividing a large or complex app, or for adding on to an app that's already been published. Avec Visual Studio 2017, version 15,7 et .NET Native 2,1, vous pouvez charger du code exécutable à partir de packages facultatifs C++ et C#.With Visual Studio 2017, version 15.7 and .NET Native 2.1, you can load executable code from both C++ and C# optional packages.

PrérequisPrerequisites

  • Visual Studio 2019 ou Visual Studio 2017 (version 15,7 ou ultérieure)Visual Studio 2019 or Visual Studio 2017 (version 15.7 or later)
  • Windows 10, version 1709 ou ultérieureWindows 10, version 1709 or later
  • Windows 10, version 1709 SDK ou version ultérieureWindows 10, version 1709 SDK or later

Pour obtenir les derniers outils de développement, consultez téléchargements et outils pour Windows 10.To get the latest development tools, see Downloads and tools for Windows 10.

Notes

Pour soumettre une application qui utilise des packages facultatifs et/ou des ensembles associés au magasin, vous devez disposer de l’autorisation.To submit an app that uses optional packages and/or related sets to the Store, you will need permission. Des packages facultatifs et des jeux associés peuvent être utilisés pour des applications métier ou d’entreprise sans l’autorisation de l’espace partenaires s’ils ne sont pas envoyés au magasin.Optional packages and related sets can be used for Line of Business (LOB) or enterprise apps without Partner Center permission if they are not submitted to the Store. Consultez prise en charge des développeurs Windows pour obtenir l’autorisation de soumettre une application qui utilise des packages facultatifs et des jeux associés.See Windows developer support to get permission to submit an app that uses optional packages and related sets.

Notes

Les packages facultatifs contenant du code exécutable doivent faire partie d’un ensemble associé.Optional packages containing executable code must be part of a related set. 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é.You will not be able to execute code from an optional package unless it is part of a related set.

Packages facultatifs C++ avec code exécutableC++ Optional packages with executable code

Pour charger du code à partir d’un package facultatif C++, consultez le référentiel OptionalPackageSample sur GitHub.To load code from a C++ optional package, see the OptionalPackageSample repository on GitHub. Le OptionalPackageDLL montre comment créer un projet avec du code qui peut être exécuté à partir du package principal.The OptionalPackageDLL shows how to create a project with code that can be executed from the main package. Le projet MyMainApp montre comment charger du code à partir du fichier OptionalPackageDLL.dll.The MyMainApp project demonstrates how to load code from the OptionalPackageDLL.dll file.

Packages facultatifs C# avec code exécutableC# Optional packages with executable code

Pour commencer à créer un package de code facultatif en C#, suivez les étapes ci-dessous pour configurer votre solution :To get started building an optional code package in C#, follow the below steps to configure your solution:

  1. Créez une application UWP avec la version minimale définie sur le kit de développement logiciel (SDK) Windows 10 automne Creators Update (Build 16299) ou version ultérieure.Create a new UWP application with the minimum version set to the Windows 10 Fall Creators Update SDK (Build 16299) or higher.

  2. Ajoutez un nouveau projet de package de code facultatif (Windows universel) à la solution.Add a new Optional Code Package (Universal Windows) project to the solution. Vérifiez que la version minimale et la version cible correspondent à celles de votre application principale.Ensure the Minimum Version and Target Version match that of your main app.

  3. Si vous envisagez de soumettre vos applications au Windows Store, cliquez avec le bouton droit sur les deux projets, puis sélectionnez Store-> associer l’application au Store...If you plan to submit your apps to the Store, right click on both projects and select Store -> Associate App with the Store...

  4. Ouvrez le Package.appxmanifest fichier de l’application principale et recherchez la Identity Name valeur.Open the Package.appxmanifest file of the main app and find the Identity Name value. Prenez note de cette valeur pour l’étape suivante.Make a note of this value for the next step.

  5. Ouvrez le fichier de package d’application facultatif Package.appxmanifest et recherchez la uap3:MainAppPackageDependency Name valeur.Open the optional app package's Package.appxmanifest file and find the uap3:MainAppPackageDependency Name value. Mettez à jour la uap3:MainAppPackageDependency Name valeur pour qu’elle corresponde à la Identity Name valeur du package d’application principal de l’étape précédente.Update the uap3:MainAppPackageDependency Name value to match the Identity Name value of the main app package from the previous step.

    Voici un exemple de l Identity 'de l’de l’application principale Package.appxmanifest .Here's an example of the Identity from the main app's Package.appxmanifest.

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

    Le package d’application facultatif uap3:MainPackageDependency doit être mis à jour pour correspondre à l’application principale de Identity .The optional app package's uap3:MainPackageDependency needs to be updated to match the main app's Identity.

    <uap3:MainPackageDependency Name="12345.MainAppProjectTest" />
    
  6. Ajoutez un Bundle.mapping.txt fichier à l’application principale.Add a Bundle.mapping.txt file to the main app. Suivez les étapes de la section ensembles associés pour créer un ensemble associé contenant les deux applications.Follow the steps in this Related sets section to create a related set containing both apps.

  7. Générez le projet de package facultatif, puis accédez au dossier de référence du package dans la sortie de la build trouvée à l’adresse ..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference .Build the optional package project and then navigate to the package Reference folder in the output from the build found at ..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference. Notez que vous pouvez choisir n’importe quelle architecture dans le chemin d’accès au dossier de référence, car le .winmd fichier (étape 8) est indépendant de l’architecture.Note that you can choose any architecture in the path to the Reference folder since the .winmd file (step 8) is architecture independent.

  8. Ajoutez une référence à partir du projet d’application principale dans le fichier qui se .winmd trouve dans ce dossier.Add a reference from the main app project to the .winmd file found in this folder. Chaque fois que vous modifiez la surface d’exposition de l’API dans le projet de package facultatif, ce .winmd fichier doit être mis à jour.Every time you change the API surface area in the optional package project, this .winmd file must be updated. Cette référence fournit le projet d’application principal avec les informations nécessaires à la compilation.This reference provides the main app project with the necessary information to compile.

  9. Dans le projet d’application principal, accédez aux propriétés de génération du projet, puis sélectionnez compiler avec .net Native chaîne d’outils.In the main app project, navigate to the project build properties and select Compile with .NET Native tool chain. Actuellement, seul le débogage dans .NET Native est pris en charge pour la création facultative de packages de code en C#.Currently, only debugging in .NET Native is supported for optional code package creation in C#. Accédez aux propriétés de débogage du projet et sélectionnez déployer des packages facultatifs.Go to the project debug properties and select Deploy optional packages. Cela permet de s’assurer que les deux packages sont synchronisés chaque fois que vous déployez le projet d’application principal.This will ensure that both packages are in sync whenever you deploy the main app project.

Une fois que vous avez terminé ces étapes, vous pouvez ajouter du code au projet de package facultatif comme s’il s’agissait d’un projet de composant WinRT géré.After you're finished with these steps, you can add code to the optional package project as if it were a managed WinRT Component project. Pour accéder au code dans le projet d’application principal, appelez les méthodes publiques exposées dans le projet de package facultatif.To access the code in the main app project, call the public methods exposed in the optional package project.