Erstellen universeller Windows-Apps für Windows und Windows Phone

Applies to Windows and Windows Phone

Sie können eine App parallel für Windows und Windows Phone erstellen und Code, Benutzersteuerelemente, Formatvorlagen, Zeichenfolgen sowie andere Ressourcen für die beiden Projekte in Visual Studio nutzen. So kann der mit dem Erstellen und Verwalten einer App für jeden Gerätetyp verbundene Zeit- und Kostenaufwand verringert werden.

Falls Sie bereits über eine Windows Store-App verfügen, können Sie derselben Projektmappe leicht eine Windows Phone Store-App hinzufügen. Ebenso können Sie leicht eine Windows Store-App hinzufügen, wenn Sie mit der Erstellung einer Windows Phone-App beginnen.

Projektvorlagen für universelle Apps werden bei der Installation von Visual Studio 2013 mit Update 2 oder höher installiert.

Entwickeln einer universellen Windows-App für Windows und Windows Phone

Wählen Sie als Erstes im Dialogfeld Neues Projekt eine Projektvorlage für eine universelle App aus.

Auf dem folgenden Screenshot sind die Projektvorlagen für universelle Apps zu sehen, die derzeit für C# verfügbar sind. In Visual C++ ist ein ähnlicher Satz von Vorlagen für universelle Apps vorhanden.

Vorlagen für universelle Apps in Visual Studio

Wenn Sie eine Vorlage für eine universelle App auswählen und eine Projektmappe erstellen, werden im Projektmappen-Explorer drei Projekte angezeigt.

  1. Ein Windows-Projekt.
  2. Ein Windows Phone-Projekt.
  3. Ein Projekt „Freigegeben“.

Auf dem folgenden Bildschirmfoto ist die Projektmappe abgebildet, die Visual Studio erstellt, wenn Sie eine Projektvorlage für eine Leere App (Universal-Apps) auswählen.

Zusammengeführtes Projekt im Projektmappen-Explorer

  • Das Windows Store-Projekt enthält XAML-Seiten und Code für Windows.

  • Das Windows Phone-Projekt enthält XAML-Seiten und Code für Windows Phone.

  • Das Projekt „Freigegeben“ ist ein Container für Code, der auf beiden Plattformen ausgeführt werden kann. Der Inhalt des Projekts „Freigegeben“ ist automatisch im Windows Phone-Projekt und im Windows Store-Projekt sowie in ihrer Buildausgabe enthalten.

Erstellen. Beim Erstellen der Projektmappe wird von Microsoft Visual Studio eine Windows Phone Store-App und eine Windows Store-App erstellt. Für das Projekt „Freigegeben“ wird keine Buildausgabe erstellt.

Startprojekt. Durch Betätigen von F5 wird das Projekt ausgeführt, das als Startprojekt ausgewählt ist. Um das Startprojekt festzulegen, klicken Sie mit der rechten Maustaste auf den Projektknoten im Projektmappen-Explorer, und klicken Sie auf Als Startprojekt festlegen. Das ausgewählte Projekt wird in Fettschrift im Projektmappen-Explorer angezeigt. Im vorherigen Screenshot ist App1.Windows (Windows 8.1) das Startprojekt.

Ziel debuggen.

  • Ist das Windows-Projekt als Startprojekt festgelegt, werden im Dropdownmenü Ziel debuggen Optionen für den Simulator von Windows oder den lokalen Computer angezeigt.
  • Ist das Phone-Projekt als Startprojekt festgelegt, werden in der Dropdownliste Optionen für Gerät sowie unterschiedliche Phone-Emulatoren angezeigt.
  • In einem in C++ geschriebenen Phone-Projekt muss die Buildkonfiguration auf die ARM-Plattform festgelegt werden, um die Geräteoption anzuzeigen und die App auf einem physikalischen Gerät bereitzustellen. Die Win32-Konfiguration wird ausschließlich für Phone-Emulatoren verwendet. Legen Sie die Plattform durch Navigieren zu Projekt | Eigenschaften | Konfigurations-Manager | Plattform fest.

Erste Schritte beim Schreiben einer universellen App

Erwägen Sie, mit der Vorlage mit dem Namen Hub-App (Universal-Apps) zu beginnen statt mit Leere App. („Hub“ entspricht „Panorama“ aus den vorherigen Versionen von Windows Phone.) Mit der Vorlage „Hub-App“ wird eine App mit drei Seiten erstellt. Sie finden die Vorlage „Hub-App“ unter der Kategorie Universal-Apps. Weitere Informationen zur Projektvorlage "Hub-App" finden Sie unter Visual Studio-Vorlagen.

Auf dem folgenden Bildschirmfoto ist die Auswahl der Projektvorlage Hub-App im Dialogfeld Neues Projekt dargestellt.

Vorlage "Hub-App" in Visual Studio

Schreiben von plattformübergreifendem Code im Projekt "Freigegeben"

Im Projekt "Freigegeben" schreiben Sie normalerweise Code, der auf beiden Plattformen ausgeführt werden kann.

Verwenden Sie die #ifdef-Direktive, um Codeabschnitte abzugrenzen, die speziell für eine Plattform gelten. Die Konstanten WINDOWS_APP und WINDOWS_PHONE_APP sind bereits vordefiniert. (Verwenden Sie in C++ folgende Direktive, um Smartphone-spezifischen Code abzugrenzen: #if WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP...#endif.)

Sie können Dateien per Drag & Drop aus einem der plattformspezifischen Projekte in das Projekt „Freigegeben“ verschieben (oder umgekehrt), um den Umfang des Codes zu ändern.

Ermitteln und Abgrenzen von plattfomspezifischem Code

Wenn Sie im Projekt „Freigegeben“ Code schreiben, wird im Visual Studio-Code-Editor ein Kontext verwendet, der für eine der beiden Plattformen bestimmt ist. In C# gelten die IntelliSense-Elemente, die Sie beim Schreiben von Code sehen, speziell für den Kontext des Code-Editors – also speziell für Windows oder Windows Phone.

Auf dem folgenden Bildschirmfoto ist die Dropdownliste für die Kontextauswahl im Visual Studio-Code-Editor zu sehen.

Dropdownliste für Kontextauswahl im Code-Editor

Wenn Sie im freigegebenen Code eine API verwenden, die nicht auf beiden Plattformen unterstützt wird, wird beim Erstellen des Projekts per Fehlermeldung auf diese API hingewiesen. Sie müssen aber kein Projekt erstellen, um sicherzustellen, dass Sie plattformübergreifende APIs verwenden. Überprüfen Sie im Code-Editor einen der folgenden Punkte:

  • Prüfen Sie die Warnsymbole und den IntelliSense-Text.

    Auf dem folgenden Bildschirmfoto ist ein Beispiel für Warnsymbole und IntelliSense für einen Typ abgebildet, der nur in Windows Phone Store-Apps unterstützt wird.

    Warnsymbole und IntelliSense

  • Schalten Sie den Editor-Kontext in der Dropdownliste auf die andere Plattform um. Dadurch werden Kringellinien unter den APIs angezeigt, die für die ausgewählte Plattform nicht unterstützt werden. In C++ zeigen violette Kringellinien es an, wenn eine API auf der anderen Plattform nicht unterstützt wird, ohne den Kontext zu wechseln oder das Projekt zu erstellen.

Nachdem Sie plattformspezifische APIs ermittelt haben, grenzen Sie sie mit der #ifdef-Direktive in Ihrem geteilten Code ab.

Hinzufügen von Unterstützung für Windows oder Windows Phone

Wenn Sie bereits eine Windows Store-App veröffentlicht haben, ist es einfach, einen Teil des Codes wiederzuverwenden und eine Version der App für Windows Phone zu veröffentlichen. Falls Sie zuerst eine Windows Phone-App erstellt haben, können Sie die Projektmappe so ändern, dass auch eine Erstellung für Windows-Tablets und -Desktops möglich ist. Zum Hinzufügen der Unterstützung für einen Gerätetyp klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie entweder die Option zum Hinzufügen von Windows Phone 8.1 oder die zum Hinzufügen von Windows 8.1.

Hinzufügen eines Windows Phone 8.1-Projekts

In Visual Studio wird das neue Windows Phone- oder Windows Store-Projekt der Projektmappe hinzugefügt. Außerdem wird in Visual Studio ein Projekt vom Typ „Freigegeben“ hinzugefügt.

Auf dem folgenden Bildschirmfoto ist eine Projektmappe abgebildet, nachdem einem vorhandenen Windows Store-Projekt ein Windows Phone-Projekt hinzugefügt wurde.

Der Projektmappe hinzugefügtes Phone-Projekt

Verschieben von Dateien in das Projekt "Freigegeben"

Sie können beliebigen Code, den Sie für Apps gemeinsam nutzen möchten, in das Projekt "Freigegeben" verschieben. Wenn Sie die App beispielsweise mithilfe einer Visual Studio-Vorlage erstellt haben, kann es ratsam sein, die Ordner Common, DataModel und Strings in das Projekt „Freigegeben“ zu verschieben. Sie können sogar die Datei App.xaml in das Projekt „Freigegeben“ verschieben. Dies wird weiter unten in diesem Thema beschrieben.

Hinweis  In C++ werden Dateien beim Verschieben zwischen den Projekten nicht physisch im Dateisystem verschoben.

Der folgende Screenshot zeigt eine Projektmappe nach dem Verschieben der vorgeschlagenen Dateien und Ordner in das Projekt "Freigegeben".

In das Projekt "Freigegeben" verschobene Dateien

Für den Code, den Sie in das Projekt „Freigegeben“ verschieben, erhalten Sie vermutlich einige Compilerfehler. Häufig können Sie diese Fehler beheben, indem Sie Ihr neues App-Projekt so konfigurieren, dass es über denselben Satz an Verweisen verfügt wie Ihr erstes Projekt. Wenn Ihre Windows Store-App beispielsweise einen Assemblyverweis für eine Drittanbieterbibliothek enthalten hat und Sie den zugehörigen Code in den Order „Freigegeben“ verschieben, dann müssen Sie auch im Windows Phone-Projekt auf die Drittanbieterbibliothek verweisen.

Auf dem folgenden Bildschirmfoto ist derselbe Assemblyverweis zu sehen, der beiden Projekten hinzugefügt wurde.

Beiden Projekten hinzugefügte Assemblyverweise

Wenn Sie in Ihrem Code APIs verwenden, die speziell für Windows gelten, können Sie diesen Codeabschnitt mithilfe der #ifdef-Direktive, die die WINDOWS_APP-Konstante enthält, abgrenzen. Verwenden Sie die WINDOWS_PHONE_APP-Konstante, um Codeabschnitte abzugrenzen, die speziell für Windows Phone 8.1 gelten. Im nächsten Abschnitt wird gezeigt, wie diese Konstanten angewendet werden, und es werden außerdem die in C++ verwendeten Konstanten aufgeführt.

Teilen von "App.xaml"

Wenn Sie für eine Universal-App eine neue Projektmappe erstellen, wird „App.xaml“ von Visual Studio in das Projekt „Freigegeben“ eingefügt. Wenn Sie ein vorhandenes Projekt in eine Universal-App konvertieren, können Sie die Datei App.xaml manuell in das Projekt „Freigegeben“ verschieben. Nach dem Verschieben der Datei müssen Sie die Build Action-Eigenschaft der Seite auf ApplicationDefinition festlegen.

  1. Wählen Sie im Projektmappen-Explorer im Projekt "Freigegeben" die Datei App.xaml aus.
  2. Wählen Sie Ansicht > Eigenschaftenfenster.
  3. Wählen Sie im Eigenschaftenfenster in der Dropdownliste Build Action den Eintrag ApplicationDefinition.

Außerdem müssen Sie entscheiden, wie Sie die erste Seite der App öffnen möchten. Beispielsweise kann die Seite „App.xaml“ einer universellen App eine Seite mit dem Namen „HubPage“ mit dem folgenden Code öffnen. Damit dieser Code funktioniert, müssen beide Projekte eine Seite mit dem Namen HubPage enthalten.



if (!rootFrame.Navigate(typeof(HubPage)))
{
    throw new Exception(“Failed to create initial page”);
}

Wenn Sie für jede App eine andere Startseite verwenden möchten, müssen Sie wie unten gezeigt #ifdef-Direktiven hinzufügen:


#if WINDOWS_APP
                if (!rootFrame.Navigate(typeof(HubPage)))
#endif
#if WINDOWS_PHONE_APP
                if (!rootFrame.Navigate(typeof(WindowsPhoneStartPage)))
#endif
                {
                    throw new Exception("Failed to create initial page");
                }


Stellen Sie zuletzt sicher, dass für alle in der Datei "App.xaml" definierten Formatvorlagen Ressourcen verwendet werden, die in beiden App-Typen verfügbar sind. Verschieben Sie diese Formatvorlagendefinitionen andernfalls in das Windows Store- oder Windows Phone-Projekt.

Verwandte Themen

Erstellen universeller XAML-Apps mit Visual Studio
Windows-Universal-App mit Nutzung von Daten des Azure Marketplace
Plattformübergreifende Codefreigabe
C#-, VB- und C++-Projektvorlagen

 

 

Anzeigen:
© 2014 Microsoft