Portieren eines Windows-Runtime 8.x-Projekts zu einem UWP-ProjektPorting a Windows Runtime 8.x project to a UWP project

Sie haben zwei Möglichkeiten, wenn Sie mit dem Portierungsprozess beginnen.You have two options when you begin the porting process. Eine Möglichkeit ist das Bearbeiten einer Kopie der vorhandenen Projektdateien, einschließlich des App-Paketmanifests (die Vorgehensweise finden Sie in den Informationen zum Aktualisieren der Projektdateien unter Migrieren von Apps zur universellen Windows-Plattform (UWP)).One is to edit a copy of your existing project files, including the app package manifest (for that option, see the info about updating your project files in Migrate apps to the Universal Windows Platform (UWP)). Die andere Möglichkeit besteht darin, ein neues Windows 10-Projekt in Visual Studio zu erstellen und die Dateien in das Projekt zu kopieren.The other option is to create a new Windows 10 project in Visual Studio and copy your files into it. Im ersten Abschnitt dieses Themas wird diese zweite Möglichkeit beschrieben, aber im restlichen Thema finden Sie zusätzliche Informationen für beide Vorgehensweisen.The first section in this topic describes that second option, but the rest of the topic has additional info applicable to both options. Sie können auch das neue Windows 10-Projekt in der gleichen Projekt Mappe wie die vorhandenen Projekte aufbewahren und Quell Code Dateien mithilfe eines freigegebenen Projekts freigeben.You can also choose to keep your new Windows 10 project in the same solution as your existing projects and share source code files using a shared project. Alternativ können Sie das neue Projekt in einer eigenen Projektmappe platzieren und Quellcodedateien mithilfe des Features für verknüpfte Dateien in Visual Studio freigeben.Or, you can keep the new project in a solution of its own and share source code files using the linked files feature in Visual Studio.

Erstellen des Projekts und Kopieren der DateienCreate the project and copy files to it

Diese Schritte konzentrieren sich auf die Option zum Erstellen eines neuen Windows 10-Projekts in Visual Studio und Kopieren der Dateien in das Projekt.These steps focus on the option to create a new Windows 10 project in Visual Studio and copy your files into it. Einige der Details (etwa, wie viele Projekte Sie erstellen und welche Dateien Sie kopieren) sind abhängig von den Faktoren und Entscheidungen, die unter Bei einer universellen 8.1-App und in den anschließenden Abschnitten beschrieben sind.Some of the specifics around how many projects you create, and which files you copy over, will depend on the factors and decisions described in If you have a Universal 8.1 app and the sections that follow it. Bei den folgenden Schritten wird vom einfachsten Fall ausgegangen.These steps assume the simplest case.

  1. Starten Sie Microsoft Visual Studio 2015, und erstellen Sie ein neues leeres Anwendungsprojekt (Windows Universal).Launch Microsoft Visual Studio 2015 and create a new Blank Application (Windows Universal) project. Weitere Informationen finden Sie unter schnell Start für Ihre Windows-Runtime 8. x-App mithilfeC#von C++Vorlagen (,, Visual Basic).For more info, see Jumpstart your Windows Runtime 8.x app using templates (C#, C++, Visual Basic). Für das neue Projekt wird ein App-Paket (APPX-Datei) erstellt, das auf allen Gerätefamilien ausgeführt werden kann.Your new project builds an app package (an appx file) that will run on all device families.
  2. Geben Sie in Ihrem universellen 8.1-App-Projekt alle Quellcodedateien und visuellen Ressourcendateien an, die Sie wiederverwenden möchten.In your Universal 8.1 app project, identify all the source code files and visual asset files that you want to reuse. Kopieren Sie mithilfe des Explorers die Datenmodelle, Ansichtsmodelle, visuellen Ressourcen, Ressourcenverzeichnisse sowie die Ordnerstruktur und alles andere, was Sie wiederverwenden möchten, in das neue Projekt.Using File Explorer, copy data models, view models, visual assets, Resource Dictionaries, folder structure, and anything else that you wish to re-use, to your new project. Kopieren oder erstellen Sie bei Bedarf Unterordner auf dem Datenträger.Copy or create sub-folders on disk as necessary.
  3. Kopieren Sie auch Ansichten (z. B. „MainPage.xaml“ und „MainPage.xaml.cs“) in das neue Projekt.Copy views (for example, MainPage.xaml and MainPage.xaml.cs) into the new project, too. Erstellen Sie bei Bedarf auch hier neue Unterordner, und entfernen Sie die vorhandenen Ansichten aus dem Projekt.Again, create new sub-folders as necessary, and remove the existing views from the project. Erstellen Sie vor dem Überschreiben oder Entfernen einer von Visual Studio generierten Ansicht jedoch eine Kopie, um später darauf zurückgreifen zu können.But, before you over-write or remove a view that Visual Studio generated, keep a copy because it may be useful to refer to it later. In der ersten Portierungsphase einer universellen 8.1-App wird in erster Linie dafür gesorgt, dass die App auf einer Gerätefamilie gut aussieht und reibungslos funktioniert.The first phase of porting a Universal 8.1 app focuses on getting it to look good and work well on one device family. Später können Sie sich dann auf eine einwandfreie Anpassung der Ansichten an alle Formfaktoren konzentrieren und bei Bedarf adaptiven Code für die optimale Nutzung einer bestimmten Gerätefamilie hinzufügen.Later, you'll turn your attention to making sure the views adapt themselves well to all form factors, and optionally to adding any adaptive code to get the most from a particular device family.
  4. Vergewissern Sie sich im Projektmappen-Explorer, dass Alle Dateien anzeigen aktiviert ist.In Solution Explorer, make sure Show All Files is toggled on. Wählen Sie die kopierten Dateien aus, klicken Sie mit der rechten Maustaste darauf, und klicken Sie dann auf Zu Projekt hinzufügen.Select the files that you copied, right-click them, and click Include In Project. Dadurch werden die zugehörigen Ordner automatisch hinzugefügt.This will automatically include their containing folders. Sie können Alle Dateien anzeigen jetzt ggf. deaktivieren.You can then toggle Show All Files off if you like. Eine alternative Vorgehensweise ist die Verwendung des Befehls Vorhandenes Element hinzufügen, wenn Sie alle erforderlichen Unterordner im Projektmappen-Explorer von Visual Studio erstellt haben.An alternative workflow, if you prefer, is to use the Add Existing Item command, having created any necessary sub-folders in the Visual Studio Solution Explorer. Stellen Sie sicher, dass für Ihre visuellen Ressourcen Buildvorgang auf Inhalt und In Ausgabeverzeichnis kopieren auf Nicht kopieren festgelegt ist.Double-check that your visual assets have Build Action set to Content and Copy to Output Directory set to Do not copy.
  5. In dieser Phase begegnen Ihnen wahrscheinlich noch einige Buildfehler.You are likely to see some build errors at this stage. Wenn Sie wissen, was Sie ändern müssen, können Sie mithilfe des Visual Studio-Befehls Suchen und ersetzen globale Änderungen in Ihrem Quellcode vornehmen. Gezieltere Änderungen können Sie im imperativen Code-Editor von Visual Studio mit den Befehlen Auflösen und Using-Direktiven organisieren aus dem Kontextmenü durchführen.But, if you know what you need to change, then you can use Visual Studio's Find and Replace command to make bulk changes to your source code; and in the imperative code editor in Visual Studio, use the Resolve and Organize Usings commands on the context menu for more targeted changes.

Maximieren der Wiederverwendung von Markup und CodeMaximizing markup and code reuse

Sie werden feststellen, dass Sie durch kleinere Umgestaltungsmaßnahmen und/oder zusätzlichen adaptiven Code (siehe Erläuterung weiter unten) das Markup und den Code für alle Gerätefamilien maximieren können.You will find that refactoring a little, and/or adding adaptive code (which is explained below), will allow you to maximize the markup and code that works across all device families. Weitere Details:Here are more details.

  • Dateien, die für alle Gerätefamilien verwendet werden, bedürfen keiner besonderen Beachtung.Files that are common to all device families need no special consideration. Diese Dateien werden von der App für alle Gerätefamilien verwendet, mit denen sie ausgeführt wird.Those files will be used by the app on all the device families that it runs on. Dazu zählen XAML-Markupdateien, imperative Quellcodedateien und Ressourcendateien.This includes XAML markup files, imperative source code files, and asset files.
  • Ihre App kann die Gerätefamilie erkennen, mit der sie ausgeführt wird, und eine Ansicht verwenden, die speziell für diese Gerätefamilie gestaltet wurde.It is possible for your app to detect the device family that it is running on and navigate to a view that has been designed specifically for that device family. Weitere Informationen finden Sie unter Erkennen der Plattform, auf der Ihre App ausgeführt wird.For more details, see Detecting the platform your app is running on.
  • Steht keine Alternative zur Verfügung, ist unter Umständen folgende ähnliche Methode hilfreich: Versehen Sie eine Markupdatei oder eine ResourceDictionary-Datei (oder den Ordner, der die Datei enthält) mit einem speziellen Namen, sodass sie zur Laufzeit nur dann automatisch geladen wird, wenn Ihre App mit einer bestimmten Gerätefamilie ausgeführt wird.A similar technique that you may find useful if there is no alternative is give a markup file or ResourceDictionary file (or the folder that contains the file) a special name such that it is automatically loaded at runtime only when your app runs on a particular device family. Diese Methode wird in der Fallstudie Bookstore1 veranschaulicht.This technique is illustrated in the Bookstore1 case study.
  • Sie sollten in der Lage sein, viele der Direktiven für die bedingte Kompilierung in den Quellcode ihrer universellen 8,1-APP zu entfernen, wenn Sie nur Windows 10 unterstützen müssen.You should be able to remove a lot of the conditional compilation directives in your Universal 8.1 app's source code if you only need to support Windows 10. Weitere Informationen finden Sie in diesem Thema unter Bedingte Kompilierung und adaptiver Code.See Conditional compilation and adaptive code in this topic.
  • Für Features, die nicht bei allen Gerätefamilien zur Verfügung stehen (wie etwa Drucker, Scanner oder die Kamerataste), können Sie adaptiven Code schreiben.To use features that are not available on all device families (for example, printers, scanners, or the camera button), you can write adaptive code. Weitere Informationen finden Sie im dritten Beispiel dieses Themas unter Bedingte Kompilierung und adaptiver Code.See the third example in Conditional compilation and adaptive code in this topic.
  • Wenn Sie Windows 8.1, Windows Phone 8,1 und Windows 10 unterstützen möchten, können Sie drei Projekte in der gleichen Projekt Mappe aufbewahren und Code für ein frei gegebenes Projekt freigeben.If you want to support Windows 8.1, Windows Phone 8.1, and Windows 10, then you can keep three projects in the same solution and share code with a Shared project. Alternativ können Sie Quellcodedateien projektübergreifend freigeben.Alternatively, you can share source code files between projects. Klicken Sie dazu in Visual Studio im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, wählen Sie Vorhandenes Element hinzufügen und dann die freizugebenden Dateien aus, und klicken Sie auf Als Link hinzufügen.Here's how: in Visual Studio, right-click the project in Solution Explorer, select Add Existing Item, select the files to share, and then click Add As Link. Speichern Sie die Quellcodedateien in einem gemeinsamen Ordner im Dateisystem, in dem sie für verknüpfte Projekte sichtbar sind.Store your source code files in a common folder on the file system where the projects that link to them can see them. Und vergessen Sie nicht, die Dateien der Quellcodeverwaltung hinzuzufügen.And don't forget to add them to source control.
  • Informationen zur Wiederverwendung auf Binär Ebene anstelle der Quell Code Ebene finden Sie unter Erstellen von Windows-Runtime Komponenten C# in und Visual Basic.For reuse at the binary level, rather than the source code level, see Creating Windows Runtime components in C# and Visual Basic. Es gibt auch Portable Klassenbibliotheken, die die Teilmenge der .NET-APIs unterstützen, die im .NET Framework für Windows 8.1, Windows Phone 8,1 und Windows 10-apps (.net Core) verfügbar sind, und die vollständige .NET Framework.There are also Portable Class Libraries, which support the subset of .NET APIs that are available in the .NET Framework for Windows 8.1, Windows Phone 8.1, and Windows 10 apps (.NET Core), and the full .NET Framework. Portable Klassenbibliothekassemblys sind mit allen diesen Plattformen binärkompatibel.Portable Class Library assemblies are binary compatible with all these platforms. Erstellen Sie mit Visual Studio ein Projekt für eine portable Klassenbibliothek.Use Visual Studio to create a project that targets a Portable Class Library. Weitere Informationen finden Sie unter Plattformübergreifende Entwicklung mit der portablen Klassenbibliothek.See Cross-Platform Development with the Portable Class Library.

Erweiterungs-SDKsExtension SDKs

Die meisten der Windows-Runtime-APIs, die Ihre universelle 8.1-App bereits aufruft, sind in der Gruppe der APIs implementiert, die als universelle Gerätefamilie bezeichnet wird.Most of the Windows Runtime APIs your Universal 8.1 app already calls are implemented in the set of APIs known as the universal device family. Einige sind jedoch in Erweiterungs-SDKs implementiert, und Visual Studio erkennt nur APIs, die von der Zielgerätefamilie Ihrer App oder von einem Erweiterungs-SDK implementiert werden, auf das Sie verwiesen haben.But, some are implemented in extension SDKs, and Visual Studio only recognizes APIs that are implemented by your app's target device family or by any extension SDKs that you have referenced.

Im Fall von Kompilierungsfehlern, die auf nicht gefundene Namespaces, Typen oder Member zurückzuführen sind, ist dies wahrscheinlich die Ursache.If you get compile errors about namespaces or types or members that could not be found, then this is likely to be the cause. Öffnen Sie in der API-Referenzdokumentation das entsprechende API-Thema, und navigieren Sie zum Abschnitt mit den Anforderungen. Hier erfahren Sie, von welcher Gerätefamilie die API implementiert wird.Open the API's topic in the API reference documentation and navigate to the Requirements section: that will tell you what the implementing device family is. Handelt es sich dabei nicht um Ihre Zielgerätefamilie, benötigen Sie einen Verweis auf das Erweiterungs-SDK für diese Gerätefamilie, um die API für Ihr Projekt verfügbar zu machen.If that's not your target device family, then to make the API available to your project, you will need a reference to the extension SDK for that device family.

Klicken Sie auf Projekt , > Verweis > Windows Universal > Extensions hinzuzufügen und das entsprechende Erweiterungs-SDK auszuwählen.Click Project > Add Reference > Windows Universal > Extensions and select the appropriate extension SDK. Wenn die gewünschten APIs also beispielsweise nur in der Familie für mobile Geräte verfügbar sind und in Version 10.0.x.y eingeführt wurden, wählen Sie Windows Mobile-Erweiterungen für die UWP aus.For example, if the APIs you want to call are available only in the mobile device family, and they were introduced in version 10.0.x.y, then select Windows Mobile Extensions for the UWP.

Dadurch wird Ihrer Projektdatei folgender Verweis hinzugefügt:That will add the following reference to your project file:

<ItemGroup>
    <SDKReference Include="WindowsMobile, Version=10.0.x.y">
        <Name>Windows Mobile Extensions for the UWP</Name>
    </SDKReference>
</ItemGroup>

Name und Versionsnummer entsprechen den Ordnern am Installationsort Ihres SDKs.The name and version number match the folders in the installed location of your SDK. Die oben angegebenen Informationen entsprechen beispielsweise dem folgenden Ordnernamen:For example, the above information matches this folder name:

\Program Files (x86)\Windows Kits\10\Extension SDKs\WindowsMobile\10.0.x.y

Falls Ihre App nicht auf die Gerätefamilie ausgerichtet ist, die die API implementiert, müssen Sie vor dem Aufrufen der API mithilfe der ApiInformation-Klasse ermitteln, ob die API vorhanden ist. (Dies wird als adaptiver Code bezeichnet.)Unless your app targets the device family that implements the API, you'll need to use the ApiInformation class to test for the presence of the API before you call it (this is called adaptive code). Diese Bedingung wird unabhängig davon ausgewertet, wo Ihre App ausgeführt wird. Das Ergebnis ist aber nur dann „True“, wenn sie auf Geräten ausgeführt wird, bei denen die API vorhanden ist und aufgerufen werden kann.This condition will then be evaluated wherever your app runs, but it will only evaluate to true on devices where the API is present and therefore available to call. Verwenden Sie Erweiterungs-SDKs und adaptiven Code erst, nachdem Sie geprüft haben, ob eine universelle API vorhanden ist.Only use extension SDKs and adaptive code after first checking whether a universal API exists. Beispiele finden Sie im nächsten Abschnitt.Some examples are given in the section below.

Weitere Informationen finden Sie auch unter App-Paketmanifest.Also, see App package manifest.

Bedingte Kompilierung und adaptiver CodeConditional compilation and adaptive code

Wenn Sie die bedingte Kompilierung (mit C# Präprozessordirektiven) verwenden, sodass die Code Dateien sowohl in Windows 8.1 als auch in Windows Phone 8,1 funktionieren, können Sie nun die bedingte Kompilierung im Hinblick auf die in Windows 10 ausgeführten Konvergenz arbeiten überprüfen.If you're using conditional compilation (with C# preprocessor directives) so that your code files work on both Windows 8.1 and Windows Phone 8.1, then you can now review that conditional compilation in light of the convergence work done in Windows 10. Konvergenz bedeutet, dass in Ihrer Windows 10-App einige Bedingungen vollständig entfernt werden können.Convergence means that, in your Windows 10 app, some conditions can be removed altogether. Bei anderen werden Laufzeitprüfungen verwendet, wie in den folgenden Beispielen veranschaulicht.Others change to run-time checks, as demonstrated in the examples below.

Hinweis   Wenn Sie Windows 8.1, Windows Phone 8,1 und Windows 10 in einer einzelnen Codedatei unterstützen möchten, können Sie dies auch tun.Note   If you want to support Windows 8.1, Windows Phone 8.1, and Windows 10 in a single code file, then you can do that too. Wenn Sie in Ihrem Windows 10-Projekt auf den Projekteigenschaften Seiten suchen, sehen Sie, dass das Projekt Windows_UAP als Symbol für die bedingte Kompilierung definiert.If you look in your Windows 10 project at the project properties pages, you'll see that the project defines WINDOWS_UAP as a conditional compilation symbol. Dies können Sie in Kombination mit der Windows_-APP und der Windows_Phone_-App verwenden.So, you can use that in combination with WINDOWS_APP and WINDOWS_PHONE_APP. Diese Beispiele zeigen den einfacheren Fall, dass die bedingte Kompilierung aus einer universellen 8,1-APP entfernt und der entsprechende Code für eine Windows 10-App ersetzt wird.These examples show the simpler case of removing the conditional compilation from a Universal 8.1 app and substituting the equivalent code for a Windows 10 app.

Das erste Beispiel zeigt das Verwendungsmuster für die PickSingleFileAsync-API (gilt nur für Windows 8.1) und die PickSingleFileAndContinue-API (gilt nur für die Windows Phone 8.1).This first example shows the usage pattern for the PickSingleFileAsync API (which applies only to Windows 8.1) and the PickSingleFileAndContinue API (which applies only to Windows Phone 8.1).

#if WINDOWS_APP
    // Use Windows.Storage.Pickers.FileOpenPicker.PickSingleFileAsync
#else
    // Use Windows.Storage.Pickers.FileOpenPicker.PickSingleFileAndContinue
#endif // WINDOWS_APP

Windows 10 konvergiert mit der picksinglefileasync -API, sodass Ihr Code Folgendes vereinfacht:Windows 10 converges on the PickSingleFileAsync API, so your code simplifies to this:

    // Use Windows.Storage.Pickers.FileOpenPicker.PickSingleFileAsync

In diesem Beispiel behandeln wir die Hardwaretaste „Zurück“ – allerdings nur für Windows Phone.In this example, we handle the hardware back button—but only on Windows Phone.

#if WINDOWS_PHONE_APP
        Windows.Phone.UI.Input.HardwareButtons.BackPressed += this.HardwareButtons_BackPressed;
#endif // WINDOWS_PHONE_APP

...

#if WINDOWS_PHONE_APP
    void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
    {
        // Handle the event.
    }
#endif // WINDOWS_PHONE_APP

In Windows 10 ist das Back-Button-Ereignis ein universelles Konzept.In Windows 10, the back button event is a universal concept. In die Hardware oder Software implementierte „Zurück“-Schaltflächen lösen das BackRequested-Ereignis aus. Daher müssen wir dieses Ereignis behandeln.Back buttons implemented in hardware or in software will all raise the BackRequested event, so that's the one to handle.

    Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested +=
        this.ViewModelLocator_BackRequested;

...

private void ViewModelLocator_BackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)
{
    // Handle the event.
}

Dieses letzte Beispiel ähnelt dem vorherigen Beispiel.This final example is similar to the previous one. Hier behandeln wir die Hardwaretaste für die Kamera – allerdings wieder nur in dem Code, der zum Windows Phone-App-Paket kompiliert wird.Here, we handle the hardware camera button—but again, only in the code compiled into the Windows Phone app package.

#if WINDOWS_PHONE_APP
    Windows.Phone.UI.Input.HardwareButtons.CameraPressed += this.HardwareButtons_CameraPressed;
#endif // WINDOWS_PHONE_APP

...

#if WINDOWS_PHONE_APP
void HardwareButtons_CameraPressed(object sender, Windows.Phone.UI.Input.CameraEventArgs e)
{
    // Handle the event.
}
#endif // WINDOWS_PHONE_APP

In Windows 10 ist die Schaltfläche Hardware Kamera ein spezielles Konzept für die Mobilgerät Familie.In Windows 10, the hardware camera button is a concept particular to the mobile device family. Da auf allen Geräten ein einzelnes App-Paket ausgeführt wird, ändern wir unsere Kompilierzeitbedingung mithilfe von so genanntem adaptivem Code in eine Laufzeitbedingung.Because one app package will be running on all devices, we change our compile-time condition into a run-time condition using what is known as adaptive code. Hierzu fragen wir zur Laufzeit mithilfe der ApiInformation-Klasse ab, ob die HardwareButtons-Klasse vorhanden ist.To do that, we use the ApiInformation class to query at run-time for the presence of the HardwareButtons class. HardwareButtons ist im SDK für mobile Erweiterungen definiert. Daher müssen wir unserem Projekt einen Verweis auf dieses SDK hinzufügen, um den Code kompilieren zu können.HardwareButtons is defined in the mobile extension SDK, so we'll need to add a reference to that SDK to our project for this code to compile. Beachten Sie jedoch, dass der Handler nur auf einem Gerät ausgeführt wird, das die im mobilen Erweiterungs-SDK definierten Typen implementiert und somit der Familie mobiler Geräte angehört.Note, though, that the handler will only be executed on a device that implements the types defined in the mobile extension SDK, and that's the mobile device family. Dieser Code entspricht also grundsätzlich dem universellen 8.1-Code, da sichergestellt wird, dass nur Features verwendet werden, die tatsächlich vorhanden sind (auch wenn dies auf andere Weise bewerkstelligt wird).So, this code is morally equivalent to the Universal 8.1 code in that it is careful only to use features that are present, although it achieves that in a different way.

    // Note: Cache the value instead of querying it more than once.
    bool isHardwareButtonsAPIPresent = Windows.Foundation.Metadata.ApiInformation.IsTypePresent
        ("Windows.Phone.UI.Input.HardwareButtons");

    if (isHardwareButtonsAPIPresent)
    {
        Windows.Phone.UI.Input.HardwareButtons.CameraPressed +=
            this.HardwareButtons_CameraPressed;
    }

    ...

private void HardwareButtons_CameraPressed(object sender, Windows.Phone.UI.Input.CameraEventArgs e)
{
    // Handle the event.
}

Weitere Informationen finden Sie unter Erkennen der Plattform, auf der Ihre App ausgeführt wird.Also, see Detecting the platform your app is running on.

App-PaketmanifestApp package manifest

Im Thema Änderungen in Windows 10 sind die Änderungen an der Schema Referenz für das Paket Manifest für Windows 10 aufgeführt, einschließlich der Elemente, die hinzugefügt, entfernt und geändert wurden.The What's changed in Windows 10 topic lists changes to the package manifest schema reference for Windows 10, including elements that have been added, removed, and changed. Referenzinformationen zu allen Elementen, Attributen und Typen im Schema finden Sie unter Elementhierarchie.For reference info on all elements, attributes, and types in the schema, see Element Hierarchy. Wenn Sie eine Windows Phone Store-App portieren, oder wenn Ihre App ein Update für eine App aus dem Windows Phone Store ist, stellen Sie sicher, dass das Element pm: phoneidentity dem Inhalt des Anwendungsmanifests Ihrer vorherigen App entspricht (verwenden Sie dieselben GUIDs, die der App vom Store zugewiesen wurden).If you're porting a Windows Phone Store app, or if your app is an update to an app from the Windows Phone Store, ensure that the pm:PhoneIdentity element matches what's in the app manifest of your previous app (use the same GUIDs that were assigned to the app by the Store). Dadurch wird sichergestellt, dass Benutzer Ihrer App, die eine Aktualisierung auf Windows 10 durchführen, Ihre neue App als Update und nicht als Duplikat erhalten.This will ensure that users of your app who are upgrading to Windows 10 will receive your new app as an update, not a duplicate. Weitere Einzelheiten finden Sie im Referenzthema pm:PhoneIdentity.See the pm:PhoneIdentity reference topic for more details.

Mit den Einstellungen in Ihrem Projekt (einschließlich der Verweise auf Erweiterungs-SDKs) wird der API-Oberflächenbereich bestimmt, der von Ihrer App aufgerufen werden kann.The settings in your project (including any extension SDKs references) determine the API surface area that your app can call. Aber anhand Ihres App-Paketmanifests wird die eigentliche Gruppe der Geräte bestimmt, auf denen Kunden Ihre App aus dem Store installieren können.But, your app package manifest is what determines the actual set of devices that your customers can install your app onto from the Store. Weitere Informationen finden Sie unter „Beispiele“ in TargetDeviceFamily.For more info, see examples in TargetDeviceFamily.

Sie können das App-Paketmanifest bearbeiten und verschiedene Deklarationen, Funktionen und andere Einstellungen festlegen, die für einige Features erforderlich sind.You can edit the app package manifest to set various declarations, capabilities, and other settings that some features need. Sie können das Manifest mit dem App-Paketmanifest-Editor von Visual Studio bearbeiten.You can use the Visual Studio app package manifest editor to edit it. Falls der Projektmappen-Explorer nicht angezeigt wird, wählen Sie ihn im Menü Ansicht aus.If the Solution Explorer is not shown, choose it from the View menu. Doppelklicken Sie auf Package.appxmanifest.Double-click Package.appxmanifest. Dadurch wird das Fenster des Manifest-Editors geöffnet.This opens the manifest editor window. Klicken Sie auf die gewünschte Registerkarte, nehmen Sie Ihre Änderungen vor, und speichern Sie sie.Select the appropriate tab to make changes and then save.

Das nächste Thema ist Problembehandlung.The next topic is Troubleshooting.