Optionale Pakete mit ausführbarem CodeOptional packages with executable code

Optionale Pakete mit ausführbarem Code sind hilfreich beim Aufteilen einer großen oder komplexen APP oder zum Hinzufügen von Paketen zu einer APP, die bereits veröffentlicht wurde.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. Mit Visual Studio 2017, Version 15,7 und .net Native 2,1 können Sie ausführbaren Code aus den optionalen Paketen C++ und c# laden.With Visual Studio 2017, version 15.7 and .NET Native 2.1, you can load executable code from both C++ and C# optional packages.

VoraussetzungenPrerequisites

  • Visual Studio 2019 oder Visual Studio 2017 (Version 15,7 oder höher)Visual Studio 2019 or Visual Studio 2017 (version 15.7 or later)
  • Windows 10, Version 1709 oder höherWindows 10, version 1709 or later
  • Windows 10, Version 1709 SDK oder höherWindows 10, version 1709 SDK or later

Informationen zu den neuesten Entwicklungs Tools finden Sie unter Downloads und Tools für Windows 10.To get the latest development tools, see Downloads and tools for Windows 10.

Hinweis

Um eine APP zu übermitteln, die optionale Pakete und/oder zugehörige Sätze für den Speicher verwendet, benötigen Sie die Berechtigung.To submit an app that uses optional packages and/or related sets to the Store, you will need permission. Optionale Pakete und zugehörige Sätze können für Line-of-Business-oder Enterprise-apps ohne Partner Center-Berechtigung verwendet werden, wenn Sie nicht an den Store übermittelt werden.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. Weitere Informationen zum Übermitteln einer APP, die optionale Pakete und zugehörige Sätze verwendet, finden Sie unter Windows Developer Support .See Windows developer support to get permission to submit an app that uses optional packages and related sets.

Hinweis

Optionale Pakete mit ausführbarem Code müssen Teil eines verknüpften Satzessein.Optional packages containing executable code must be part of a related set. Es ist nicht möglich, Code aus einem optionalen Paket auszuführen, es sei denn, er ist Teil eines verknüpften Satzes.You will not be able to execute code from an optional package unless it is part of a related set.

C++ optionale Pakete mit ausführbarem CodeC++ Optional packages with executable code

Informationen zum Laden von Code aus einem optionalen C++-Paket finden Sie im optionalpackagesample -Repository auf GitHub.To load code from a C++ optional package, see the OptionalPackageSample repository on GitHub. Die optionalpackagedll zeigt, wie ein Projekt mit Code erstellt wird, das aus dem Hauptpaket ausgeführt werden kann.The OptionalPackageDLL shows how to create a project with code that can be executed from the main package. Das Projekt mymainapp veranschaulicht das Laden von Code aus der OptionalPackageDLL.dll Datei.The MyMainApp project demonstrates how to load code from the OptionalPackageDLL.dll file.

Optionale c#-Pakete mit ausführbarem CodeC# Optional packages with executable code

Führen Sie die folgenden Schritte aus, um die Projekt Mappe zu konfigurieren:To get started building an optional code package in C#, follow the below steps to configure your solution:

  1. Erstellen Sie eine neue UWP-Anwendung, deren Mindestversion auf das Windows 10 Fall Creators Update SDK (Build 16299) oder höher festgelegt ist.Create a new UWP application with the minimum version set to the Windows 10 Fall Creators Update SDK (Build 16299) or higher.

  2. Fügen Sie ein neues optionales Windows-Projekt (universelles Windows) zur Projekt Mappe hinzu.Add a new Optional Code Package (Universal Windows) project to the solution. Stellen Sie sicher, dass die Mindestversion und die Zielversion denen der Haupt-App entsprechen.Ensure the Minimum Version and Target Version match that of your main app.

  3. Wenn Sie Ihre apps an den Store übermitteln möchten, klicken Sie mit der rechten Maustaste auf beide Projekte, und wählen Sie Store-> App mit dem Store verknüpfen.. .If you plan to submit your apps to the Store, right click on both projects and select Store -> Associate App with the Store...

  4. Öffnen Sie die Package.appxmanifest Datei der Haupt-APP, und suchen Sie den Identity Name Wert.Open the Package.appxmanifest file of the main app and find the Identity Name value. Notieren Sie sich diesen Wert für den nächsten Schritt.Make a note of this value for the next step.

  5. Öffnen Sie die Datei des optionalen App-Pakets, Package.appxmanifest und suchen Sie den uap3:MainAppPackageDependency Name Wert.Open the optional app package's Package.appxmanifest file and find the uap3:MainAppPackageDependency Name value. Aktualisieren Sie den Wert so, dass er uap3:MainAppPackageDependency Name dem Identity Name Wert des Haupt-App-Pakets aus dem vorherigen Schritt entspricht.Update the uap3:MainAppPackageDependency Name value to match the Identity Name value of the main app package from the previous step.

    Im folgenden finden Sie ein Beispiel für die Identity aus der Haupt-APP 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" />
    

    Das optionale App-Paket uap3:MainPackageDependency muss entsprechend der Haupt-APP aktualisiert werden 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. Fügen Sie Bundle.mapping.txt der Haupt-App eine Datei hinzu.Add a Bundle.mapping.txt file to the main app. Führen Sie die Schritte im Abschnitt " Verwandte Sätze " aus, um ein zugehöriges DataSet mit beiden apps zu erstellen.Follow the steps in this Related sets section to create a related set containing both apps.

  7. Erstellen Sie das optionale Paket Projekt, und navigieren Sie dann zum Paket Verweis Ordner in der Ausgabe des Builds, der unter gefunden wurde ..\[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. Beachten Sie, dass Sie eine beliebige Architektur im Pfad zum Verweis Ordner auswählen können, da die .winmd Datei (Schritt 8) architekturunabhängig ist.Note that you can choose any architecture in the path to the Reference folder since the .winmd file (step 8) is architecture independent.

  8. Fügen Sie der .winmd in diesem Ordner gefundenen Datei einen Verweis aus dem Haupt-App-Projekt hinzu.Add a reference from the main app project to the .winmd file found in this folder. Jedes Mal, wenn Sie die API-Oberfläche im optionalen Paket Projekt ändern .winmd , muss diese Datei aktualisiert werden.Every time you change the API surface area in the optional package project, this .winmd file must be updated. Diese Referenz stellt das Haupt-App-Projekt mit den erforderlichen Informationen für die Kompilierung bereit.This reference provides the main app project with the necessary information to compile.

  9. Navigieren Sie im Haupt-App-Projekt zu den projektbuildeigenschaften, und wählen Sie mit .net Native Toolkette kompilierenaus.In the main app project, navigate to the project build properties and select Compile with .NET Native tool chain. Derzeit wird nur das Debuggen in .net Native für die optionale Erstellung von Code Paketen in c# unterstützt.Currently, only debugging in .NET Native is supported for optional code package creation in C#. Wechseln Sie zu den Project Debug-Eigenschaften, und wählen Sie Optionale Paketebereitstellen aus.Go to the project debug properties and select Deploy optional packages. Dadurch wird sichergestellt, dass beide Pakete synchron sind, wenn Sie das Haupt-App-Projekt bereitstellen.This will ensure that both packages are in sync whenever you deploy the main app project.

Nachdem Sie diese Schritte abgeschlossen haben, können Sie dem optionalen Paket Projekt Code hinzufügen, als ob es sich um ein verwaltetes WinRT-Komponenten Projekt handelt.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. Um auf den Code im Haupt-App-Projekt zuzugreifen, müssen Sie die öffentlichen Methoden aufrufen, die im optionalen Paket Projekt verfügbar gemacht werden.To access the code in the main app project, call the public methods exposed in the optional package project.