Freigeben über


Wechseln von Windows-Runtime 8.x zu UWP

Wenn Sie über eine universelle 8.1-App verfügen – unabhängig davon, ob sie auf Windows 8.1, Windows Phone 8.1 oder beides ausgerichtet ist – stellen Sie fest, dass Ihr Quellcode und Ihre Fähigkeiten reibungslos zu Windows 10 portieren werden. Mit Windows 10 können Sie eine UWP-App (Universelle Windows-Plattform) erstellen, bei der es sich um ein einzelnes App-Paket handelt, das Ihre Kunden auf jeder Art von Gerät installieren können. Weitere Hintergrundinformationen zu Windows 10, UWP-Apps und den Konzepten von adaptivem Code und adaptiver UI, die in diesem Portierungshandbuch erwähnt werden, finden Sie in Handbuch zu UWP-Apps.

Beim Portieren werden Sie feststellen, dass Windows 10 die meisten APIs mit den vorherigen Plattformen sowie XAML-Markup, UI-Framework und Entwicklerwerkzeuge gemeinsam verwendet, und Ihnen alles vertraut vorkommt. Genau wie zuvor können Sie weiterhin zwischen C++, C# und Visual Basic für die Programmiersprache wählen, die zusammen mit dem XAML-Benutzeroberflächenframework verwendet werden soll. Ihre ersten Schritte bei der genauen Planung, was Sie mit Ihrer aktuellen App oder Ihren Apps machen sollen, hängen von den Arten von Apps und Projekten ab, die Sie haben. Dies wird in den folgenden Abschnitten erläutert.

Wenn Sie über eine universelle 8.1-App verfügen

Eine universelle 8.1-App basiert auf einem universellen 8.1-App-Projekt. Angenommen, der Name des Projekts ist AppName_81. Es enthält diese Unterprojekte.

  • AppName_81.Windows. Dies ist das Projekt, das das App-Paket für Windows 8.1 erstellt.
  • AppName_81.WindowsPhone. Dies ist das Projekt, das das App-Paket für Windows Phone 8.1 erstellt.
  • AppName_81.Shared. Dies ist das Projekt, das Quellcode, Markupdateien und andere Vermögenswerte und Ressourcen enthält, die von den beiden anderen Projekten verwendet werden.

Oft bietet eine universelle Windows-App in ihren Windows 8.1- und Windows Phone 8.1-Versionen dieselben Features und nutzt dabei denselben Code und dasselbe Markup. Eine App wie diese ist ein idealer Kandidat für die Portierung in eine einzelne Windows 10-App, die auf die Universelle Gerätefamilie abzielt (und die Sie auf einer breiten Palette von Geräten installieren können). Sie portieren im Wesentlichen den Inhalt des Shared-Projekts und müssen nur wenig oder nichts aus den anderen beiden Projekten verwenden, da sie nur wenig oder gar nichts enthalten.

Manchmal enthält die Versionen für Windows 8.1 und/oder Windows Phone 8.1 der App einzigartige Funktionen. Oder sie enthalten dieselben Features, aber sie implementieren diese Features mit unterschiedlichen Techniken oder unterschiedlicher Technologie. Mit einer solchen App können Sie sie zu einer einzelnen App portieren, die auf die universelle Gerätefamilie ausgerichtet ist (in diesem Fall möchten Sie, dass sich die App an verschiedene Geräte anpasst), oder Sie können es als mehr als eine App portieren, z. B. eine für die Desktopgerätefamilie und eine andere für die Mobilgerätefamilie. Die Art der Universellen 8.1-App bestimmt, welche dieser Optionen für Ihren Fall am besten geeignet ist.

  1. Portieren Sie den Inhalt des freigegebenen Projekts zu einer App für die universelle Gerätefamilie. Wenn zutreffend, sichern Sie andere Inhalte aus den Windows- und WindowsPhone-Projekten und verwenden Sie diese Inhalte entweder bedingungslos in der App oder abhängig vom Gerät, auf dem Ihre App gerade läuft (dieses Verhalten wird als adaptivegenannt).
  2. Portieren Sie die Inhalte des Windows Phone-Projekts in eine App, die auf die universelle Gerätefamilie abzielt. Wenn zutreffend, retten Sie andere Inhalte aus dem Windows-Projekt, indem Sie sie bedingungslos oder adaptiv verwenden.
  3. Portieren Sie die Inhalte des Windows-Projekts zu einer App, die auf die universelle Gerätefamilie abzielt. Wenn zutreffend, retten Sie andere Inhalte aus dem WindowsPhone-Projekt, indem Sie sie bedingungslos oder adaptiv verwenden.
  4. Portieren Sie den Inhalt des Windows-Projekts zu einer App, die auf die Universelle oder Desktopgerätefamilie ausgerichtet ist, und portieren Sie den Inhalt des WindowsPhone-Projekts zu einer App für die universelle oder mobile Gerätefamilie. Sie können eine Lösung mit einem gemeinsamen Projekt erstellen und weiterhin Quellcode, Markupdateien sowie andere Vermögenswerte und Ressourcen zwischen den beiden Projekten teilen. Sie können auch unterschiedliche Lösungen erstellen und dieselben Elemente weiterhin mithilfe von Links teilen.

Wenn Sie über eine Windows 8.1-App verfügen

Übertragen Sie das Projekt auf eine App, die auf die universelle Gerätefamilie oder die Desktopgerätefamilie ausgerichtet ist. Wenn Sie die universelle Gerätefamilie auswählen und Ihre App APIs aufruft, die nur in der Desktopgerätefamilie implementiert sind, können Sie diese Aufrufe mit adaptivem Code schützen.

Wenn Sie über eine Windows Phone 8.1-App verfügen

Portieren Sie das Projekt zu einer App, die auf die universelle oder mobile Gerätefamilie ausgerichtet ist. Wenn Sie die universelle Gerätefamilie auswählen und Ihre App APIs aufruft, die nur in der Mobilgerätefamilie implementiert sind, können Sie diese Aufrufe mit adaptivem Code schützen.

Anpassen der App an mehrere Formfaktoren

Die Option, die Sie in den vorherigen Abschnitten auswählen, bestimmt den Bereich der Geräte, auf denen Ihre App oder Apps ausgeführt werden, und dies kann eine sehr breite Palette von Geräten sein. Auch wenn Sie Ihre App auf die Mobilgerätefamilie beschränken, bleiben Sie immer noch mit einer Vielzahl von Bildschirmgrößen zur Unterstützung. Wenn Ihre App also auf Geräteformen ausgeführt wird, die bisher nicht unterstützt wurden, testen Sie Ihre UI auf diesen Geräteformen und nehmen Sie die notwendigen Änderungen vor, damit sich die UI an jede Geräteform anpasst. Sie können sich dies als eine Aufgabe nach der Portierung oder ein erweitertes Portierungsziel vorstellen, und es gibt einige Beispiele dafür in den Bookstore2 und QuizGame Fallstudien.

Ansatz der Portierung Schicht-für-Schicht

Beim Portieren einer Universal 8.1-App zum Modell für UWP-Apps werden praktisch alle Ihre Kenntnisse und Erfahrungen übernommen, ebenso wie der Großteil Ihres Quellcodes und Ihrer Markups sowie die Softwaremuster, die Sie verwenden.

  • Ansicht. Die Ansicht (zusammen mit dem Ansichtsmodell) bildet die Benutzeroberfläche Ihrer App. Im Idealfall besteht die Ansicht aus Markup, das an feststellbare Eigenschaften eines Ansichtsmodells gebunden ist. Ein weiteres Muster (allgemein und bequem, aber nur kurzfristig) besteht darin, dass imperativer Code in einer Code-Behind-Datei UI-Elemente direkt manipuliert. In beiden Fällen ist ihr UI-Markup und -Design – und sogar imperativer Code, der UI-Elemente bearbeitet – einfach portierbar.
  • Ansichtsmodelle und Datenmodelle. Selbst wenn Sie Muster zur Trennung der Verantwortlichkeiten (wie MVVM) nicht formal anwenden, gibt es zwangsläufig Code in Ihrer App, der die Funktion des Ansichtsmodells und des Datenmodells erfüllt. Der Ansichtsmodellcode verwendet Typen in den Ui-Framework-Namespaces. Sowohl Ansichtsmodell- als auch Datenmodellcode verwenden auch nicht visuelle Betriebssystem- und .NET Framework-APIs (einschließlich APIs für den Datenzugriff). Und diese APIs sind auch für UWP-Apps verfügbar, sodass der meiste, wenn nicht der gesamte Code, ohne Änderungen portiert werden kann.
  • Clouddienste. Es ist wahrscheinlich, dass einige Ihrer Apps (vielleicht eine große Menge davon) in der Cloud in Form von Diensten ausgeführt werden. Der Teil der App, der auf dem Clientgerät ausgeführt wird, stellt eine Verbindung zu diesen her. Dies ist der Teil einer verteilten App, der wahrscheinlich beim Portieren des Clientparts unverändert bleibt. Wenn Sie noch nicht über eine Option verfügen, ist eine gute Option für Clouddienste für Ihre UWP-App Microsoft Azure Mobile Services, die leistungsstarke Back-End-Komponenten bereitstellt, die Ihre App für Dienste aufrufen kann, von einfachen Benachrichtigungen für Live-Kachelupdates bis hin zur art der hohen Skalierbarkeit, die eine Serverfarm bereitstellen kann.

Überlegen Sie vor oder während der Portierung, ob Ihre App verbessert werden könnte, indem Sie sie umgestalten, sodass Code mit einem ähnlichen Zweck in Ebenen zusammengefasst und nicht willkürlich verteilt wird. Das Aufteilen Ihrer App in Ebenen wie die oben beschriebenen erleichtert es Ihnen, die App korrekt zu machen, sie zu testen und anschließend zu lesen und zu verwalten. Sie können die Funktionalität wiederverwendbarer machen, indem Sie dem Muster "Model-View-ViewModel (MVVM)" folgen. Mit diesem Muster werden die Daten-, Geschäfts- und UI-Teile Ihrer App voneinander getrennt. Auch innerhalb der Benutzeroberfläche können Zustand und Verhalten von der visuellen Darstellung getrennt und separat getestet werden. Mit MVVM können Sie Ihre Daten und Geschäftslogik einmal schreiben und auf allen Geräten verwenden, unabhängig von der Benutzeroberfläche. Es ist wahrscheinlich, dass Sie auch einen Großteil des View-Models und der View-Komponenten auf allen Geräten wiederverwenden können.

Thema BESCHREIBUNG
Übertragen des Projekts Sie haben zwei Optionen, wenn Sie mit dem Portierungsprozess beginnen. Eine Möglichkeit besteht darin, eine Kopie Ihrer vorhandenen Projektdateien zu bearbeiten, einschließlich des App-Paketmanifests (Informationen zum Aktualisieren Ihrer Projektdateien finden Sie in Migration von Apps auf die Universelle Windows-Plattform (UWP)). Die andere Option besteht darin, ein neues Windows 10/11-Projekt in Visual Studio zu erstellen und Ihre Dateien darin zu kopieren.
Problembehandlung Wir empfehlen dringend, bis zum Ende dieser Anleitung zur Portierung zu lesen, aber wir verstehen auch, dass Sie sich darauf freuen, vorwärts zu gehen und die Phase zu erreichen, in der Ihr Projekt erstellt und ausgeführt wird. Zu diesem Zweck können Sie temporäre Fortschritte erzielen, indem Sie alle nicht unbedingt benötigten Code kommentieren oder verstören und dann später zurückkehren, um diese Verschuldung abzuzahlen. Die Tabelle mit Symptomen und Lösungen zur Problembehandlung in diesem Thema kann Ihnen in diesem Stadium hilfreich sein, auch wenn sie kein Ersatz für das Lesen der nächsten Themen ist. Sie können immer wieder auf die Tabelle zurückgreifen, während Sie die späteren Themen durcharbeiten.
Portieren von XAML und Benutzeroberfläche Die Praxis, die Benutzeroberfläche in Form von deklarativem XAML-Markup zu definieren, übersetzt sich äußerst gut von Universal 8.1-Apps auf UWP-Apps. Sie werden feststellen, dass der Großteil Ihres Markups kompatibel ist, obwohl Sie möglicherweise einige Anpassungen an den Systemressourcenschlüsseln oder benutzerdefinierten Vorlagen vornehmen müssen, die Sie verwenden.
Portierung für Eingabe/Ausgabe, Geräte und App-Modelle Code, der in das Gerät selbst und seine Sensoren integriert wird, bezieht den Benutzer sowohl bei der Eingabe als auch bei der Ausgabe mit ein. Sie kann auch die Verarbeitung von Daten umfassen. Dieser Code wird jedoch im Allgemeinen nicht als UI-Ebene oder als Datenebene betrachtet. Dieser Code umfasst die Integration mit der Vibrationssteuerung, dem Beschleunigungsmesser, dem Gyroskop, dem Mikrofon und dem Lautsprecher (die sich mit Spracherkennung und -synthese überschneiden), der Position sowie Eingabemodalitäten wie Toucheingabe, Maus, Tastatur und Stift.
Fallstudie: Bookstore1 In diesem Thema wird eine Fallstudie zum Portieren einer sehr einfachen universellen 8.1-App zu einer Windows 10- und Windows 11-UWP-App erläutert. Eine universelle 8.1-App ist eine App, die ein App-Paket für Windows 8.1 und ein anderes App-Paket für Windows Phone 8.1 erstellt. Mit Windows 10 und Windows 11 können Sie ein einzelnes App-Paket erstellen, das Ihre Kunden auf einer vielzahl von Geräten installieren können, und das tun wir in dieser Fallstudie. Siehe den Leitfaden für UWP-Apps.
Fallstudie: Bookstore2 Diese Fallstudie, die auf den in SemanticZoom--Steuerelement angegebenen Informationen basiert. Im Viewmodell stellt jede Instanz der Klasse Author die Gruppe der Bücher dar, die von diesem Autor geschrieben wurden. Im SemanticZoom können wir entweder eine nach Autoren gruppierte Liste der Bücher anzeigen oder herauszoomen, um eine Sprungliste von Autoren zu sehen.
Fallstudie: QuizGame Dieses Thema präsentiert eine Fallstudie zum Portieren einer bestehenden Peer-to-Peer-Quizspiel-App von einer WinRT 8.1-Beispiel-App zu einer Windows 10 und Windows 11 UWP-App.

Dokumentation