Wechsel von Windows-Runtime 8.x zu UWPMove from Windows Runtime 8.x to UWP

Wenn Sie eine Universal 8.1-app haben – gibt an, ob er Windows 8.1, Windows Phone 8.1 oder beides abzielt, und Sie werden feststellen, dass der Quellcode und Fähigkeiten reibungslos auf Windows 10 Portieren werden.If you have a Universal 8.1 app—whether it's targeting Windows 8.1, Windows Phone 8.1, or both—then you'll find that your source code and skills will port smoothly to Windows 10. Unter Windows 10 können Sie eine app (Universelle Windows Plattform) erstellen, die eine einzelne app-Paket ist, die Ihre Kunden auf jede Art von Gerät installieren können.With Windows 10, you can create a Universal Windows Platform (UWP) app, which is a single app package that your customers can install onto every kind of device. Weitere Hintergrundinformationen für Windows 10 UWP-apps und die Konzepte von adaptiven Code und adaptive Benutzeroberfläche, in denen wir in diesem Leitfaden zum Portieren erwähnt werden, finden Sie unter Anleitung für UWP-apps.For more background on Windows 10, UWP apps, and the concepts of adaptive code and adaptive UI that we'll mention in this porting guide, see Guide to UWP apps.

Beim Portieren, werden Sie feststellen, dass Windows 10 die meisten APIs, mit der früheren Plattformen sowie XAML-Markup, Benutzeroberflächen-Framework und Tools teilt, und Sie es finden alle reassuringly vertraut.While porting, you'll find that Windows 10 shares the majority of APIs with the previous platforms, as well as XAML markup, UI framework, and tooling, and you'll find it all reassuringly familiar. Genau wie vorher, können Sie weiterhin zwischen C++, C# und Visual Basic als Programmiersprache mit dem XAML-Benutzeroberflächenframework wählen.Just as before, you can still choose between C++, C#, and Visual Basic for the programming language to use along with the XAML UI framework. Die ersten Schritte bei der Planung, was genau mit der aktuellen App oder den Apps geschehen soll, hängt von der Art der vorhandenen Apps und Projekte ab.Your first steps in planning exactly what to do with your current app or apps will depend on the kinds of apps and projects you have. Dies wird in den folgenden Abschnitten erläutert.That's explained in the following sections.

Bei einer universellen 8.1-AppIf you have a Universal 8.1 app

Eine universelle 8.1-App wird aus einem universellen 8.1-App-Projekt erstellt.A Universal 8.1 app is built from an 8.1 Universal App project. Nehmen wir an den Namen des Projekts ist AppName_81.Let's say the project's name is AppName_81. Es enthält diese untergeordneten Projekte.It contains these sub-projects.

  • AppName_81.Windows.AppName_81.Windows. Dies ist das Projekt, das das app-Paket für Windows 8.1-builds.This is the project that builds the app package for Windows 8.1.
  • AppName_81.WindowsPhone.AppName_81.WindowsPhone. Dies ist das Projekt, das das App-Paket für Windows Phone 8.1 erstellt.This is the project that builds the app package for Windows Phone 8.1.
  • AppName_81.Shared.AppName_81.Shared. Dies ist das Projekt, das den Quellcode, die Markupdateien und andere Assets und Ressourcen enthält, die von den beiden anderen Projekten verwendet werden.This is the project that contains source code, markup files, and other assets and resources that are used by both of the other two projects.

Häufig eine 8.1 universelle Windows-app die gleichen Funktionen bietet – und dies mit den gleichen Code und Markup – in der Windows 8.1 und Windows Phone 8.1-Formularen.Often, an 8.1 Universal Windows app offers the same features—and does so using the same code and markup—in both its Windows 8.1 and Windows Phone 8.1 forms. Eine app, ist ein idealer Kandidat für das Portieren auf eine einzelne Windows 10-app, die auf die Universal-Gerätefamilie (und Sie können auf die größtmögliche Palette an Geräten installieren).An app like that is an ideal candidate for porting to a single Windows 10 app that targets the Universal device family (and that you can install onto the widest range of devices). Sie portieren im Grunde den Inhalt des freigegebenen Projekts und müssen nur wenige oder gar keine Elemente von den anderen beiden Projekten verwenden, da sie nur wenig oder keinen Inhalt haben.You'll essentially port the contents of the Shared project and you'll need to use little or nothing from the other two projects because there'll be little or nothing in them.

In anderen Fällen, die Windows 8.1-und/oder den Windows Phone 8.1-Form der app enthalten spezielle Features.Other times, the Windows 8.1 and/or the Windows Phone 8.1 form of the app contain unique features. Oder sie enthalten den gleichen Featureumfang, implementieren diese Features jedoch mit verschiedenen Techniken oder anderen Technologien.Or they contain the same features but they implement those features using different techniques or different technology. Mit einer solchen App haben Sie die Möglichkeit, sie zu einer einzelnen App zu portieren, die auf die universelle Gerätefamilie ausgerichtet ist (in diesem Fall sollte sich die App selbst an verschiedene Geräte anpassen), oder Sie können sie zu mehr als einer App portieren, z. B. zu einer, die auf die Desktopgerätefamilie ausgerichtet ist, und einer für die Mobilgerätefamilie.With an app like that, you can choose to port it to a single app that targets the Universal device family (in which case you will want the app to adapt itself to different devices), or you can choose to port it as more than one app, perhaps one targeting the Desktop device family and another targeting the Mobile device family. Die Art der universellen 8.1-App bestimmt, welche Option für diesen Fall am besten geeignet ist.The nature of the Universal 8.1 app will determine which of these options is best for your case.

  1. Portieren Sie den Inhalt des freigegebenen Projekts zu einer App für die universelle Gerätefamilie.Port the contents of the Shared project to an app targeting the Universal device family. Übernehmen Sie ggf. andere Inhalte aus den Windows- und WindowsPhone-Projekten, und verwenden Sie diese Inhalte bedingungslos in der App oder bedingt auf dem Gerät, auf dem Ihre App zu diesem Zeitpunkt ausgeführt wird (das letztere Verhalten wird auch als adaptiv bezeichnet).If applicable, salvage any other content from the Windows and WindowsPhone projects, and use that content either unconditionally in the app or conditional on the device that your app happens to be running on at the time (the latter behavior is known as adaptive).
  2. Portieren Sie den Inhalt des WindowsPhone-Projekts zu einer App für universelle Geräte.Port the contents of the WindowsPhone project to an app targeting the Universal device family. Retten Sie ggf. andere Inhalte aus dem Windows-Projekt, und verwenden Sie sie bedingungslos oder adaptiv.If applicable, salvage any other content from the Windows project, using it either unconditionally or adaptively.
  3. Portieren Sie den Inhalt des Windows-Projekts zu einer App für universelle Geräte.Port the contents of the Windows project to an app targeting the Universal device family. Retten Sie ggf. andere Inhalte aus dem WindowsPhone-Projekt, und verwenden Sie sie bedingungslos oder adaptiv.If applicable, salvage any other content from the WindowsPhone project, using it either unconditionally or adaptively.
  4. Portieren Sie den Inhalt des Windows-Projekts in eine App für universelle Geräte oder Desktopgeräte, und portieren Sie auch den Inhalt des WindowsPhone-Projekts zu einer App für universelle Geräte oder Mobilgeräte.Port the contents of the Windows project to an app targeting the Universal or the Desktop device family and also port the contents of the WindowsPhone project to an app targeting the Universal or the Mobile device family. Sie können eine Projektmappe mit einem freigegebenen Projekt erstellen und weiterhin Quellcode, Markupdateien und andere Assets und Ressourcen zwischen den beiden Projekten gemeinsam nutzen.You can create a solution with a Shared project, and continue to share source code, markup files, and other assets and resources between the two projects. Oder Sie können verschiedene Projektmappen erstellen und weiterhin dieselben Elemente mithilfe von Links teilen.Or, you can create different solutions and still share the same items using links.

Bei einer Windows 8.1-AppIf you have a Windows 8.1 app

Portieren Sie das Projekt zu einer App für universelle Geräte oder Desktopgeräte.Port the project to an app targeting the Universal or the Desktop device family. Wenn Sie die universelle Gerätefamilie wählen und Ihre App die APIs aufruft, die nur in der Desktopgerätefamilie implementiert sind, können Sie diese Aufrufe mit adaptivem Code schützen.If you choose the Universal device family, and your app calls APIs that are implemented only in the Desktop device family, then you can guard those calls with adaptive code.

Bei einer Windows Phone 8.1-AppIf you have a Windows Phone 8.1 app

Portieren Sie das Projekt zu einer App für universelle Geräte oder Mobilgeräte.Port the project to an app targeting the Universal or the Mobile device family. Wenn Sie die universelle Gerätefamilie wählen und Ihre App die APIs aufruft, die nur in der Mobilgerätefamilie implementiert sind, können Sie diese Aufrufe mit adaptivem Code schützen.If you choose the Universal device family, and your app calls APIs that are implemented only in the Mobile device family, then you can guard those calls with adaptive code.

Anpassen der App an mehrere FormfaktorenAdapting your app to multiple form factors

Die in den vorherigen Abschnitten gewählte Option bestimmt das Gerätespektrum, auf dem Ihre App oder Apps ausgeführt werden, und dabei kann es sich um eine sehr breite Palette von Geräten handeln.The option you choose from the previous sections will determine the range of devices that your app or apps will run on, and that may well be a very wide range of devices. Selbst wenn Sie Ihre App auf mobile Geräte beschränken, müssen Sie dennoch ein breites Spektrum an Bildschirmgrößen unterstützen.Even limiting your app to the Mobile device family still leaves you with a wide range of screen sizes to support. Wenn Ihre App unter verschiedenen Formfaktoren ausgeführt wird, die sie früher nicht unterstützt haben, sollten Sie Ihre Benutzeroberfläche daher für diese Formfaktoren testen und ggf. Änderungen vornehmen, damit die Benutzeroberfläche entsprechend angepasst wird.So, if your app will be running on form factors that it didn't formerly support, then test your UI on those form factors and make any change necessary, so that your UI adapts appropriately on each. Stellen Sie sich dies als eine Aufgabe nach der Portierung oder eine erweiterte Zielvorgabe für das Portieren vor. In den Fallstudien Bookstore2 und QuizGame gibt es einige Praxisbeispiele dafür.You can think of this is a post-porting task, or a porting stretch-goal, and there are some examples of it in practice in the Bookstore2 and QuizGame case studies.

Portieren der einzelnen EbenenApproaching porting layer-by-layer

Beim Portieren einer universellen 8.1-App zum Modell für UWP-Apps können Sie auf nahezu alle Ihre Kenntnisse und Erfahrungen sowie einen Großteil Ihres Quellcodes, Markups und Ihrer Softwaremuster zurückgreifen.When porting a Universal 8.1 app to the model for UWP apps, virtually all of your knowledge and experience will transfer, as will most of your source code and markup and the software patterns you use.

  • Ansicht.View. Die Ansicht und das Ansichtsmodell bilden die UI Ihrer App.The view (together with the view model) makes up your app's UI. Im Idealfall besteht die Ansicht aus Markup, das an feststellbare Eigenschaften eines Ansichtsmodells gebunden ist.Ideally, the view consists of markup bound to observable properties of a view model. Ein weiteres gängiges, aber nur auf kurze Sicht zweckmäßiges Muster ist das direkte Ändern von UI-Elementen mit imperativem Code in einer CodeBehind-Datei.Another pattern (common and convenient, but only in the short term) is for imperative code in a code-behind file to directly manipulate UI elements. In beiden Fällen lassen sich Ihre UI-Markups und -Designs – und sogar imperativer Code zum Ändern von UI-Elementen – einfach portieren.In either case, your UI markup and design—and even imperative code that manipulates UI elements—will be straightforward to port.
  • Ansichtsmodelle und Datenmodelle.View models and data models. Auch wenn Sie Muster zur Trennung der Zuständigkeiten (z. B. MVVM) nicht ausdrücklich anwenden, gibt es in Ihrer App zwangsläufig Code, der die Funktion des Ansichts- und Datenmodells übernimmt.Even if you don't formally embrace separation-of-concerns patterns (such as MVVM), there is inevitably code present in your app that performs the function of view model and data model. Code für das Ansichtsmodell nutzt Typen in den Namespaces des Benutzeroberflächenframeworks.View model code makes use of types in the UI framework namespaces. Sowohl der Code für das Ansichtsmodell als auch der Code für das Datenmodell nutzen zudem nicht visuelle Betriebssystem- und .NET Framework-APIs (darunter APIs für den Datenzugriff).Both view model and data model code also use non-visual operating system and .NET Framework APIs (including APIs for data-access). Und diese APIs sind auch für UWP-Apps verfügbar, sodass der Großteil dieses Codes, wenn nicht gar der gesamte Code, ohne Änderung portiert wird.And those APIs are available for UWP apps, too, so most if not all of this code will port without change.
  • Clouddienste.Cloud services. Höchstwahrscheinlich werden einige (oder sogar die meisten) Teile Ihrer App in Form von Diensten in der Cloud ausgeführt.It's likely that some of your app (perhaps a great deal of it) runs in the cloud in the form of services. Der auf dem Clientgerät ausgeführte Teil der App stellt eine Verbindung mit diesen Diensten her.The part of the app running on the client device connects to those. Dies ist der Teil einer verteilten App, bei dem es am wahrscheinlichsten ist, dass er beim Portieren des Clientteils unverändert bleibt.This is the part of a distributed app most likely to remain unchanged when porting the client part. Falls Sie noch keine Clouddienste nutzen, sind Microsoft Azure Mobile Services eine gute Wahl für Ihre UWP-App. Sie bieten leistungsstarke Back-End-Komponenten, die Ihre App für verschiedenste Dienste aufrufen kann – angefangen bei einfachen Benachrichtigungen für Live-Kachelaktualisierungen bis hin zur komplexen Skalierbarkeit, die eine Serverfarm bereitstellen kann.If you don't already have one, a good cloud services option for your UWP app is Microsoft Azure Mobile Services, which provides powerful back-end components that your app can call for services ranging from simple notifications for live tiles updates up to the kind of heavy-lifting scalability a server farm can provide.

Überlegen Sie vor oder während der Portierung, ob Ihre App dadurch verbessert werden könnte, wenn Sie sie umgestalten und Code mit einem ähnlichen Zweck in Ebenen zusammenfassen, anstatt ihn willkürlich zu verteilen.Before or during the porting, consider whether your app could be improved by refactoring it so that code with a similar purpose is gathered together in layers and not scattered arbitrarily. Die Aufteilung Ihrer App in Ebenen wie die oben beschriebenen erleichtert Ihnen das Ausschließen von Fehlern, Testen und spätere Lesen und Warten Ihrer App.Factoring your app into layers like those described above makes it easier for you to make your app correct, to test it, and then subsequently to read and maintain it. Sie können Funktionalität stärker wiederverwendbar machen, indem Sie dem Model-View-ViewModel (MVVM)-Muster folgen.You can make functionality more reusable by following the Model-View-ViewModel (MVVM) pattern. Dieses Muster trennt die Daten-, Geschäfts- und UI-Teile der App voneinander.This pattern keeps the data, business, and UI parts of your app separate from one another. Auch innerhalb der UI kann das Muster Zustand und Verhalten von den visuellen Elementen getrennt halten, sodass diese separat getestet werden können.Even within the UI it can keep state and behavior separate, and separately testable, from the visuals. Das MVVM-Muster bietet Ihnen die Möglichkeit, Ihre Daten und Geschäftslogik einmal zu schreiben und auf allen Geräten, unabhängig von der UI, zu verwenden.With MVVM, you can write your data and business logic once and use it on all devices no matter the UI. Es ist wahrscheinlich, dass Sie auch einen Großteil des Ansichtsmodells und der Ansichtselemente auf verschiedenen Geräten wiederverwenden können.It's likely that you'll be able to re-use much of the view model and view parts across devices, too.

ThemaTopic BeschreibungDescription
Portieren das ProjektPorting the 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 ist das Erstellen eines neuen Windows 10-Projekts in Visual Studio und das Kopieren Ihrer Dateien in dieses Projekt.The other option is to create a new Windows 10 project in Visual Studio and copy your files into it.
ProblembehandlungTroubleshooting Wir empfehlen dringend, dieses Handbuch für das Portieren vollständig zu lesen. Wir wissen aber auch, dass Sie möglichst schnell die Phase erreichen möchten, in der Ihr Projekt erstellt und ausgeführt wird.We highly recommend reading to the end of this porting guide, but we also understand that you're eager to forge ahead and get to the stage where your project builds and runs. Zu diesem Zweck können Sie einen temporären Fortschritt erzielen, indem Sie allen nicht unbedingt erforderlichen Code auskommentieren und anschließend zurückkehren, um die Schulden später zu bezahlen.To that end, you can make temporary progress by commenting or stubbing out any non-essential code, and then returning to pay off that debt later. Die Tabelle mit Symptomen und Möglichkeiten zur Problembehandlung in diesem Thema kann in dieser Phase hilfreich für Sie sein, ersetzt jedoch nicht das Lesen der nächsten Themen.The table of troubleshooting symptoms and remedies in this topic may be helpful to you at this stage, although it's not a substitute for reading the next few topics. Sie können die Tabelle jederzeit zu Rate ziehen, während Sie die weiteren Themen lesen.You can always refer back to the table as you progress through the later topics.
Portieren von XAML und BenutzeroberflächePorting XAML and UI Die Vorgehensweise zum Definieren einer Benutzeroberfläche in Form von deklarativem XAML-Markup lässt sich sehr gut von universellen 8.1-Apps auf UWP-Apps für die universelle Windows-Plattform (UWP) übertragen.The practice of defining UI in the form of declarative XAML markup translates extremely well from Universal 8.1 apps to UWP apps. Sie werden feststellen, dass der Großteil des Markups kompatibel ist. Unter Umständen sind jedoch einige Anpassungen bei Systemressourcenschlüsseln oder benutzerdefinierten Vorlagen erforderlich.You'll find that most of your markup is compatible, although you may need to make some adjustments to the system Resource keys or custom templates that you're using.
Für e/a-, Geräte- und app-Modell PortierenPorting for I/O, device, and app model Code, der in das Gerät selbst integriert und auf dessen Sensoren abgestimmt ist, umfasst auch Eingaben vom und Ausgaben an den Benutzer.Code that integrates with the device itself and its sensors involves input from, and output to, the user. Auch die Datenverarbeitung kann einbezogen werden.It can also involve processing data. Aber dieser Code wird in der Regel nicht als UI-Ebene oder Datenebene betrachtet.But, this code is not generally thought of as either the UI layer or the data layer. Dieser Code enthält die Integration in Vibrationscontroller, Beschleunigungsmesser, Gyroskop, Mikrofon und Lautsprecher (überschneiden sich mit Spracherkennung und Sprachsynthese), (geografischen) Standort und Eingabemodalitäten, z. B. Touch, Maus, Tastatur und Stift.This code includes integration with the vibration controller, accelerometer, gyroscope, microphone and speaker (which intersect with speech recognition and synthesis), (geo)location, and input modalities such as touch, mouse, keyboard, and pen.
Fallstudie: Bookstore1Case study: Bookstore1 Dieses Thema enthält eine Fallstudie für das Portieren einer sehr einfachen universellen 8.1-App zu einer UWP-App für Windows 10.This topic presents a case study of porting a very simple Universal 8.1 app to a Windows 10 UWP app. Bei einer universellen 8.1-App wird ein App-Paket für Windows 8.1 und ein anderes App-Paket für Windows Phone 8.1 erstellt.A Universal 8.1 app is one that builds one app package for Windows 8.1, and a different app package for Windows Phone 8.1. Mit Windows 10 können Sie ein einzelnes App-Paket erstellen, das Ihre Kunden auf einer Vielzahl von Geräten installieren können – und genau das werden wir in dieser Fallstudie tun.With Windows 10, you can create a single app package that your customers can install onto a wide range of devices, and that's what we'll do in this case study. Weitere Informationen finden Sie unter Anleitung für UWP-Apps.See Guide to UWP apps.
Fallstudie: Bookstore2Case study: Bookstore2 Diese Fallstudie baut auf den Informationen zum SemanticZoom-Steuerelement auf.This case study—which builds on the info given in SemanticZoom control. Im Ansichtsmodell stellt jede Instanz der Author-Klasse die Gruppe der vom betreffenden Autor verfassten Titel dar. In SemanticZoom können wir dann entweder die Bücherliste nach Autoren gruppiert anzeigen oder die Liste verkleinern, um eine Sprungliste der Autoren zu erhalten.In the view model, each instance of the class Author represents the group of the books written by that author, and in the SemanticZoom, we can either view the list of books grouped by author or we can zoom out to see a jump list of authors.
Fallstudie: QuizGameCase study: QuizGame Dieses Thema enthält eine Fallstudie zum Portieren eines funktionierenden Peer-zu-Peer-Quizspiels (WinRT 8.1-Beispiel-App) zu einer UWP-App für Windows 10.This topic presents a case study of porting a functioning peer-to-peer quiz game WinRT 8.1 sample app to a Windows 10 UWP app.

DokumentationDocumentation