Verwaltete Desktop-Apps und Windows-Runtime

Visual Studio hat die Erstellung verwalteter Windows Store-Apps, die Windows-Runtime-APIs nutzen, deutlich vereinfacht. Bei der Erstellung einer verwalteten Desktop-App müssen zur Nutzung der Windows-Runtime-APIs allerdings einige manuelle Schritte ausgeführt werden. In diesem Dokument erfahren Sie, welche Schritte Sie ausführen müssen, damit Ihre Desktop-App die Windows-Runtime-APIs nutzen kann. Hierbei wird vorausgesetzt, dass der Leser mit der Erstellung verwalteter Desktop-Apps vertraut ist. Diese Informationen gelten für Windows 8.

Einführung

Durch die Erweiterung von Visual Studio wurde die Entwicklung von Windows Store-Apps signifikant vereinfacht. Zu den Erweiterungen zählt auch die einfache Nutzung neuer Windows-Runtime-APIs. Dieser zusätzliche Komfort wird aktiviert, wenn Sie sich für die Erstellung eines der neuen Projekttypen für den Windows Store entscheiden.

Wenn Sie dagegen eine neue verwaltete Desktop-App erstellen, die die neuen Windows-Runtime-APIs nutzt, müssen Sie ein paar manuelle Schritte ausführen. Dieses Dokument enthält einige Tipps, um Sie dabei unterstützen.

Ausrichten auf Windows 8

Nach der Erstellung Ihrer neuen verwalteten Desktop-App müssen Sie in der Projektdatei eine manuelle Justierung vornehmen, um Visual Studio mitzuteilen, dass es sich um eine App für Windows 8 handeln soll:

<PropertyGroup>
  <TargetPlatformVersion>8.0</TargetPlatformVersion>
</PropertyGroup>

Dies ist erforderlich, um Windows-Metadatendateien Verweise hinzuzufügen.

Eine ausführliche Anleitung finden Sie in How to: Add or Remove References By Using the Reference Manager. Führen Sie hier einen Bildlauf zu "Windows Tab" -> "Core Subgroup" durch.

Nutzen standardmäßiger Windows-Runtime-Typen

Wie Sie sicher wissen, ist in der MSDN Library-Dokumentation angegeben, ob die einzelnen Windows-APIs für Desktop-Apps, für Windows Store-Apps oder für beides geeignet sind. Verwenden Sie daher in Ihren Desktop-Apps ausschließlich APIs, die wie folgt gekennzeichnet sind:

  • Applies to: Nur Desktop-Apps

Oder:

  • Applies to: Desktop-Apps | Windows Store-Apps

Darüber hinaus kann jede API über dokumentierte Eigenheiten oder Abhängigkeiten verfügen. So können manche APIs beispielsweise nur verwendet werden, wenn ein UI-Framework erstellt wird. Lesen Sie daher die Dokumentation der Windows-Runtime-Klassen, die Sie verwenden möchten, um sicherzugehen, dass sie für Ihre Desktop-App geeignet sind.

Abgesehen davon kann Ihre Desktop-App erst dann Elemente der Windows-Runtime nutzen, wenn Sie Ihr Projekt mit einem wesentlichen Verweis versehen haben. Die Windows-Runtime definiert einige Standardklassen und -schnittstellen in "System.Runtime" (beispielsweise "IEnumerable"), die in den Windows-Runtime-Bibliotheken verwendet werden. Standardmäßig sind diese Typen für Ihre Desktop-App nicht auffindbar, weshalb Sie manuell auf "System.Runtime" verweisen müssen, um etwas mit den Windows-Runtime-Klassen anfangen zu können. So erstellen Sie diesen manuellen Verweis:

1. Navigieren Sie im Projektmappen-Explorer zu Ihrer verwalteten Desktop-App.
2. Klicken Sie mit der rechten Maustaste auf den Knoten Verweise, und klicken Sie anschließend auf Verweis hinzufügen.
3. Klicken Sie auf die Registerkarte Durchsuchen.
4. Klicken Sie auf Durchsuchen….
5. Navigieren Sie zur Datei "System.Runtime.dll". Diese befindet sich für gewöhnlich an einem Pfad wie dem folgenden: %ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\System.Runtime.dll

Nun können Sie anderen Windows-Metadatendateien Verweise hinzufügen und die geeigneten Windows-Runtime-APIs für Ihre Desktop-App verwenden.

Nutzen von Windows-COM-APIs

Windows 8 enthält einige hilfreiche, über COM verfügbare APIs. Diese neuen COM-APIs werden häufig in Verbindung mit der Windows-Runtime für einige der neuen Windows-Features rund um das Windows Store-App-Modell verwendet. Ein Beispiel: Wenn Sie eine verwaltete Desktop-App erstellen, die installierte Windows Store-App-Pakete auflistet, können Sie die installierten Windows Store-Apps mithilfe der PackageManager-Klasse der Windows-Runtime ermitteln und die COM-Schnittstelle "IAppxManifestReader" verwenden, um Informationen zu diesen Windows Store-Apps aus ihrem jeweiligen Manifest abzurufen.

Zur Nutzung dieser COM-Schnittstellen müssen Sie eine Typbibliothek und anschließend eine verwaltete Assembly mit den Definitionen dieser COM-Schnittstellen erstellen:

1. Öffnen Sie eine Developer-Eingabeaufforderung für Visual Studio.
2. Führen Sie einen Befehl nach folgendem Muster aus, um die Typbibliothek zu generieren: midl %ProgramFiles(x86)%\Windows Kits\8.0\Include\winrt\<IDL-Dateiname> /out <Pfad>\<TLB-Dateiname>
3. Führen Sie einen Befehl nach folgendem Muster aus, um die soeben generierte Typbibliothek in eine .NET-Assembly zu konvertieren: tlbimp <Pfad>\<TLB-Dateiname> /namespace:<Namespace> /out:<Pfad>\<Assemblydateiname>
4. Fügen Sie der soeben erstellten Assembly in Visual Studio einen Verweis hinzu:
a. Navigieren Sie im Projektmappen-Explorer zu Ihrer verwalteten Desktop-App.
b. Klicken Sie mit der rechten Maustaste auf den Knoten Verweise, und klicken Sie anschließend auf Verweis hinzufügen.
c. Klicken Sie auf die Registerkarte Durchsuchen.
d. Klicken Sie auf Durchsuchen....

Problembehandlung

Hier finden Sie einige hilfreiche Problembehandlungsschritte.

  • In manchen Fällen können Sie die Generierung der .NET-Assembly in Schritt 3 überspringen und der in Schritt 2 erstellten Typbibliothek im Visual Studio-Dialogfeld Verweis hinzufügen direkt einen Verweis hinzufügen. Dies funktioniert jedoch nicht immer, und in Visual Studio tritt unter Umständen ein Fehler auf, wenn Sie auf Typbibliotheken verweisen, die Sie auf diese Weise erstellt haben. Abhilfe schafft in einem solchen Fall für gewöhnlich die Generierung einer .NET-Assembly und die Erstellung eines entsprechenden Verweises, wie in den Schritten 3 und 4 beschrieben.
  • Wenn Sie der .NET-Assembly in Schritt 4 den Verweis hinzufügen, legt Visual Studio die Option Interop-Typen einbetten standardmäßig auf True fest. Klicken Sie zum Anzeigen dieser Einstellung mit der rechten Maustaste im Projektmappen-Explorer im Ordner Verweise auf die Assembly mit dem neuen Verweis. Diese Einstellung hat unter Umständen später Fehler beim Kompilieren des Projekts zur Folge. Ein Beispiel hierfür ist der Fehler CS1752: "Der Interoptyp '<Typname>' kann nicht eingebettet werden. Verwenden Sie stattdessen die entsprechende Schnittstelle."

    Dieses Problem ist recht verbreitet, lässt sich aber häufig sehr einfach beheben. Weitere Informationen finden Sie unter Interop Type Cannot Be Embedded.

Verwandte Themen

How to: Add or Remove References By Using the Reference Manager
Interop Type Cannot Be Embedded

 

 

Anzeigen:
© 2015 Microsoft