.NET für Windows Store-Apps – Übersicht

.NET Framework enthält eine Teilmenge verwalteter Typen, mit denen Sie Windows Store-Apps mit C# oder Visual Basic erstellen können. Diese Teilmenge verwalteter Typen wird als .NET für Windows Store-Apps bezeichnet und ermöglicht .NET Framework-Entwicklern, Windows Store-Apps innerhalb einer vertrauten Programmierumgebung zu erstellen. Typen, die nicht mit der Entwicklung von Windows Store-Apps verknüpft sind, sind in dieser Teilmenge nicht enthalten.

Sie verwenden diese verwalteten Typen mit Typen aus der Windows-Runtime-API, um Windows Store-Apps zu erstellen. In der Regel werden Sie keine Unterschiede zwischen der Verwendung verwalteter Typen und der Verwendung der Windows-Runtime-Typen feststellen, außer dass die verwalteten Typen innerhalb von Namespaces verbleiben, die mit System beginnen, und die Windows-Runtime-Typen innerhalb von Namespaces, die mit Windows beginnen. Zusammen bieten .NET für Windows Store-Apps und Windows-Runtime den vollständigen Satz von Typen und Membern, die zum Entwickeln von Windows Store-Apps mit C# oder Visual Basic verfügbar sind.

Beim Design der Teilmenge von verwalteten Typen und Membern wurde der Fokus klar auf die Windows Store-App-Entwicklung gesetzt. Deshalb wurde Folgendes ausgelassen:

  • Typen und Member, die sich nicht für die Entwicklung von Windows Store-Apps eignen (beispielsweise Konsolen- und ASP.NET-Typen).

  • Veraltete Typen

  • Typen, die sich mit Windows-Runtime-Typen überschneiden.

  • Typen und Member, die Betriebssystemfunktionen umschließen (beispielsweise System.Diagnostics.EventLog und Leistungsindikatoren).

  • Member, die zu Verwirrung führen (wie die Close-Methode auf E/A-Typen).

In einigen Fällen ist ein Typ, der in einer .NET Framework-Desktop-App verwendet wird, in .NET für Windows Store-Apps nicht vorhanden. Stattdessen können Sie einen Typ aus der Windows-Runtime verwenden. Beispielsweise ist die System.IO.IsolatedStorage.IsolatedStorageSettings-Klasse nicht in .NET für Windows Store-Apps enthalten, aber die Windows.Storage.ApplicationDataContainer-Klasse bietet ein ähnliches Verhalten beim Speichern von App-Einstellungen. Beispiele für allgemeine Änderungen, die Sie möglicherweise vornehmen müssen, sind im Abschnitt Konvertieren von vorhandenem .NET Framework-Code enthalten.

Der gesamte Satz von Assemblys für .NET für Windows Store-Apps wird automatisch in Ihrem Projekt referenziert, wenn Sie eine Windows Store-App mit C# oder Visual Basic erstellen. Daher können Sie alle Typen verwenden, die von .NET für Windows Store-Apps in Ihrem Projekt unterstützt werden, ohne zusätzliche Aktionen durchführen zu müssen. Eine Liste der kombinierten Namespaces, die von .NET für Windows Store-Apps und Windows-Runtime bereitgestellt werden (gruppiert nach Funktionsbereich), finden Sie im Abschnitt .NET Framework- und Windows Runtime-Namespaces.

Eine Liste der Namespaces und Typen, die in der .NET Framework-Teilmenge enthalten sind, finden Sie unter .NET für Windows Store-Apps – unterstützte APIs.

Sie können auch ein Portable Klassenbibliothek-Projekt erstellen, um eine .NET Framework-Bibliothek zu entwickeln, die von einer Windows Store-App verwendet werden kann. Das Projekt muss .NET für Windows Store-Apps als eine der Zielplattformen enthalten. Eine Portable Klassenbibliothek ist besonders nützlich, wenn Sie Klassen entwickeln möchten, die von Apps für verschiedene Plattformtypen, beispielsweise einer Windows Phone-App, einer Desktop-App und einer Windows Store-App verwendet werden können. Weitere Informationen erhalten Sie unter Portable Klassenbibliotheks-Übersicht.

Dieses Thema enthält die folgenden Abschnitte:

  • Konvertieren von vorhandenem .NET Framework-Code

  • Erweiterungsmethoden zum Konvertieren von Typen

  • .NET Framework- und Windows Runtime-Namespaces

Konvertieren von vorhandenem .NET Framework-Code

In der Regel konvertieren Sie nicht einfach eine vorhandene .NET Framework-App in eine Windows Store-App, sondern entwerfen die .NET Framework-App für eine bessere Benutzerfreundlichkeit neu. Allerdings ist es auch möglich, dass Sie nur Teile einer vorhandenen .NET Framework-App für eine Verwendung in einer neuen Windows Store-App konvertieren. Beim Konvertieren von vorhandenem .NET Framework-Code sollten Sie die folgenden Änderungen beachten, die Sie möglicherweise in der Windows Store-App vornehmen müssen:

  • Änderungen der Benutzeroberfläche

  • E/A-Änderungen

  • Speicheränderungen

  • Netzwerkänderungen

  • Threadingänderungen

  • Reflektionsänderungen

  • Sicherheitsänderungen

  • Ressourcenänderungen

  • Ausnahmeänderungen

  • WCF-Änderungen

  • Änderungen an allgemeinen .NET Framework-Typen

BR230302.collapse_all(de-de,VS.110).gifÄnderungen der Benutzeroberfläche

Wenn Sie Benutzeroberflächencode aus einer Silverlight-basierten Anwendung oder Windows Phone-App konvertieren, können Sie oftmals die gleichen Benutzeroberflächentypen verwenden. Die Typen befinden sich jetzt jedoch in den Windows.UI.Xaml-Namespaces und nicht in den System.Windows-Namespaces. Diese neuen Benutzeroberflächentypen ähneln den vorherigen Benutzeroberflächentypen von .NET Framework, allerdings enthalten sie einige andere Member.

Ersetzen

mit

Benutzeroberflächentypen in System.Windows.*-Namespaces

Benutzeroberflächentypen in Windows.UI.Xaml.*-Namespaces

(beispielsweise befindet sich die Border-Klasse im Windows.UI.Xaml.Controls-Namespace)

Weitere Informationen zum Portieren von Benutzeroberflächencode finden Sie unter Migrieren einer Windows Phone 7-App zu XAML.

BR230302.collapse_all(de-de,VS.110).gifE/A-Änderungen

Die E/A-Typen enthalten neue Member, um das neue await-Schlüsselwort im asynchronen Programmiermodell zu unterstützen.

Ersetzen

mit

System.IO.Stream.BeginRead- und EndRead-Methoden

System.IO.Stream.ReadAsync-Methode

Ein Beispiel finden Sie unter ReadAsync(array<Byte[], Int32, Int32).

System.IO.Stream.BeginWrite- und EndWrite-Methoden

System.IO.Stream.WriteAsync-Methode

Ein Beispiel finden Sie unter WriteAsync(array<Byte[], Int32, Int32).

Close()-Methode in E/A-Klassen.

Dispose()-Methode in E/A-Klassen.

- oder -

Deklarieren und instanziieren Sie das E/A-Objekt in einer using- (C#) oder Using-Anweisung (Visual Basic), um sicherzustellen, dass sie ordnungsgemäß freigegeben ist, beispielsweise:

using (StreamReader sr = 
  new StreamReader(await passedFile.OpenStreamForReadAsync()))
{
    while ((nextLine = await sr.ReadLineAsync()) != null)
    {
        contents.Append(nextLine);
    }
}
Using sr As StreamReader = 
  New StreamReader(Await passedFile.OpenStreamForReadAsync())
    While (nextLine = Await sr.ReadLineAsync()) <> Nothing
        contents.Append(nextLine)
    End While
End Using

System.IO.File.ReadAllText-Methode

Die ReadTextAsync-Methode in der Windows.Storage.PathIO-Klasse

Code zum Abrufen und Öffnen einer Datei

public static async void ReadFileSamples()
{
  // Read a file from package
  StorageFolder packageFolder = 
      ApplicationModel.Package.Current.InstalledLocation;
  StorageFile packagedFile = 
      await packageFolder.GetFileAsync("FileInPackage");

  // Read a file from AppData
  StorageFolder localFolder = ApplicationData.Current.LocalFolder;
  StorageFile localFile = 
    await localFolder.GetFileAsync("FileInAppData");
}
Public Async Shared Sub ReadFileSamples()
  ' Read a file from package
  Dim packageFolder As StorageFolder = 
      ApplicationModel.Package.Current.InstalledLocation
  Dim packagedFile As StorageFile = 
      Await packageFolder.GetFileAsync("FileInPackage")

  ' Read a file from AppData
  Dim localFolder As StorageFolder = ApplicationData.Current.LocalFolder
  Dim localFile As StorageFile = 
    Await localFolder.GetFileAsync("FileInAppData ")
End Sub

BR230302.collapse_all(de-de,VS.110).gifSpeicheränderungen

Anstatt die System.IO.IsolatedStorage-Klasse zu verwenden, verwenden Sie die Typen in den Windows.Storage-Namespaces, um lokale Daten und Dateien zu speichern.

Ersetzen

mit

System.IO.IsolatedStorage.IsolatedStorageFile-Klasse

Die LocalFolder-Eigenschaft in der Windows.Storage.ApplicationData-Klasse

ApplicationData.Current.LocalFolder

System.IO.IsolatedStorage.IsolatedStorageSettings-Klasse

Die LocalSettings-Eigenschaft in der Windows.Storage.ApplicationData-Klasse

ApplicationData.Current.LocalSettings

Weitere Informationen finden Sie unter Anwendungsdaten.

BR230302.collapse_all(de-de,VS.110).gifNetzwerkänderungen

Ersetzen

mit

System.Net.WebClient-Klasse

System.Net.Http.HttpClient-Klasse für das Senden von HTTP-Anforderungen und Empfangen von HTTP-Antworten

- oder -

Typen im Windows.Networking.BackgroundTransfer-Namespace zum Hoch- oder Herunterladen großer Datenmengen

Typen im System.Net.Sockets-Namespace

Typen im Windows.Networking.Sockets-Namespace

Verwandte URIs, wenn Sie an Windows-Runtime-Typen übergeben werden.

Absolute URIs

Weitere Informationen finden Sie unter Übergeben eines URI an die Windows-Runtime.

Ausnahmebehandlungscode, der die UriFormatException-Ausnahme abfängt.

Code, der die FormatException-Ausnahme abfängt. Dies ist die übergeordnete Klasse von UriFormatException.

BR230302.collapse_all(de-de,VS.110).gifThreadingänderungen

Einige der Threadingmember von .NET Framework haben sich geändert, und einige Typen sind nun in der Windows-Runtime-API verfügbar.

Ersetzen

mit

System.Threading.Thread.MemoryBarrier-Methode

Interlocked.MemoryBarrier-Methode im System.Threading-Namespace

System.Threading.Thread.ManagedThreadId-Eigenschaft

Environment.CurrentManagedThreadId-Eigenschaft im System-Namespace

System.Threading.Thread.CurrentCulture-Eigenschaft

CultureInfo.CurrentCulture-Eigenschaft im System.Globalization-Namespace

System.Threading.Thread.CurrentUICulture-Eigenschaft

CultureInfo.CurrentUICulture-Eigenschaft im System.Globalization-Namespace

System.Threading.Timer-Klasse

Windows.System.Threading.ThreadPoolTimer-Klasse

System.Threading.ThreadPool-Klasse

Windows.System.Threading.ThreadPool-Klasse

Code, der Arbeit für den Pool in Warteschlangen einreiht.

Task.Run(() => 
{ 
  // work goes here
});
Task.Run(
    Sub()
        ' work goes here
    End Sub)

Code, der Arbeit für den Pool in Warteschlangen einreiht und auf den Abschluss wartet.

await Task.Run(() => 
{ 
  // work goes here
});
Await Task.Run(
    Sub()
        ' work goes here
    End Sub)

Code, der eine Arbeitsaufgabe mit langer Laufzeit erstellt.

Task.Factory.StartNew(() => 
{ 
  // work goes here
}, TaskCreationOptions.LongRunning);
Task.Factory.StartNew(
    Sub()
        ' work goes here
    End Sub, TaskCreationOptions.LongRunning)

BR230302.collapse_all(de-de,VS.110).gifReflektionsänderungen

Die meisten Member aus der System.Type-Klasse wurden in die System.Reflection.TypeInfo-Klasse verschoben. Sie können das TypeInfo-Objekt abrufen, indem Sie die System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type)-Methode aufrufen. Diese Methode ist eine Erweiterungsmethode für Type.

Ersetzen

mit

type.Assembly

type.GetTypeInfo().Assembly

type.GetMethods(BindingFlags.DeclaredOnly)

type.GetTypeInfo().DeclaredMethods

type.GetMethod("MethodName", BindingFlags.DeclaredOnly)

type.GetTypeInfo().GetDeclaredMethod("MethodName")

type.GetNestedTypes()

type.GetTypeInfo().DeclaredNestedTypes

System.Delegate.CreateDelegate-Methode

MethodInfo.CreateDelegate-Methode

Weitere Informationen finden Sie unter Reflektion in .NET Framework für Windows Store-Apps in der MSDN Library.

BR230302.collapse_all(de-de,VS.110).gifSicherheitsänderungen

Viele der Typen für Sicherheits-, Authentifizierungs- und Kryptografievorgänge sind über Windows-Runtime-Typen verfügbar. Eine vollständige Liste der Sicherheitsnamespaces, die für Windows Store-Apps verfügbar sind, finden Sie in der Sicherheitsnamespace-Liste weiter unten in diesem Thema.

BR230302.collapse_all(de-de,VS.110).gifRessourcenänderungen

Für Windows Store-Apps erstellen Sie eine einzelne Ressourcendatei anstelle des Nabe und Speiche-Modells, das in Desktop-Apps verwendet wird. Außerdem verwenden Sie die Ressourcentypen aus den Windows.ApplicationModel.Resources- und Windows.ApplicationModel.Resources.Core-Namespaces und nicht aus dem System.Resources-Namespace.

Weitere Informationen finden Sie unter Erstellen und Abrufen von Ressourcen in Windows Store-Apps.

BR230302.collapse_all(de-de,VS.110).gifAusnahmeänderungen

In einigen Fällen löst ein verwalteter Typ eine Ausnahme aus, die nicht in .NET für Windows Store-Apps enthalten ist. In diesen Fällen können Sie die übergeordnete Klasse der Ausnahme abfangen, die nicht enthalten ist. In einer Desktop-App fangen Sie die UriFormatException-Ausnahme beispielsweise ab, um einen ungültigen URI zu bearbeiten. In einer App im Windows Store wird die FormatException-Ausnahme hingegen abgefangen, da UriFormatException nicht in .NET für Windows Store-Apps enthalten ist. FormatException ist die übergeordnete Klasse von UriFormatException.

BR230302.collapse_all(de-de,VS.110).gifWCF-Änderungen

In Windows Store-Apps können Sie die Clientfunktionen der Windows Communication Foundation (WCF) nutzen, um Daten von einem WCF-Dienst abzurufen, aber Sie können keinen WCF-Dienst erstellen, um Daten bereitzustellen.

BR230302.collapse_all(de-de,VS.110).gifÄnderungen an allgemeinen .NET Framework-Typen

Ersetzen

mit

System.Xml.XmlConvert.ToDateTime-Methode

XmlConvert.ToDateTimeOffset-Methode

System.ICloneable-Schnittstelle

Eine benutzerdefinierte Methode, die den entsprechenden Typ zurückgibt.

System.Array.AsReadOnly- und System.Collections.Generic.List<T>.AsReadOnly-Methoden

Eine neue Instanz der System.Collections.ObjectModel.ReadOnlyCollection<T>-Klasse, die wie folgt erstellt wurde:

new ReadOnlyCollection<string>(selectedList)
New ReadOnlyCollection(Of String)(selectedList)

Erweiterungsmethoden zum Konvertieren von Typen

In den meisten Fällen entwickeln Sie Windows Store-Apps mit .NET Framework-Typen und Windows-Runtime-Typen ohne besondere Berücksichtigung oder Konvertierung. In einigen Fällen aber stellt .NET Framework Erweiterungsmethoden bereit, um die Interaktion zwischen .NET Framework-Typen und Windows-Runtime-Typen zu vereinfachen. Diese Erweiterungsmethoden finden sich in folgenden Klassen:

.NET Framework- und Windows-Runtime-Namespaces

In den folgenden Abschnitten sind die Namespaces nach Funktionen aufgelistet, die in .NET für Windows Store-Apps und Windows-Runtime bereitgestellt werden.

BR230302.collapse_all(de-de,VS.110).gifAuflistungen

BR230302.collapse_all(de-de,VS.110).gifKern

BR230302.collapse_all(de-de,VS.110).gifDaten und Inhalt

BR230302.collapse_all(de-de,VS.110).gifGeräte

BR230302.collapse_all(de-de,VS.110).gifDiagnose

BR230302.collapse_all(de-de,VS.110).gifDateien und Ordner

BR230302.collapse_all(de-de,VS.110).gifGlobalisierung

BR230302.collapse_all(de-de,VS.110).gifGrafik

BR230302.collapse_all(de-de,VS.110).gifManaged Extensibility Framework (MEF)

Zum Installieren der folgenden Namespaces öffnen Sie das Projekt in Visual Studio 2012, und wählen Sie NuGet-Pakete verwalten aus dem Menü Projekt. Suchen Sie anschließend online nach dem Microsoft.Composition-Paket.

BR230302.collapse_all(de-de,VS.110).gifMedien

BR230302.collapse_all(de-de,VS.110).gifNetzwerk

BR230302.collapse_all(de-de,VS.110).gifPräsentation

BR230302.collapse_all(de-de,VS.110).gifDrucken

BR230302.collapse_all(de-de,VS.110).gifReflektion

BR230302.collapse_all(de-de,VS.110).gifRessourcen

BR230302.collapse_all(de-de,VS.110).gifSicherheit

BR230302.collapse_all(de-de,VS.110).gifSoziales Netzwerk

BR230302.collapse_all(de-de,VS.110).gifThreading

BR230302.collapse_all(de-de,VS.110).gifBenutzeroberflächenautomatisierung

BR230302.collapse_all(de-de,VS.110).gifBenutzerinteraktion

BR230302.collapse_all(de-de,VS.110).gifSprachen und Compiler

Siehe auch

Konzepte

.NET für Windows Store-Apps – unterstützte APIs

Erstellen von Windows-Runtime-Komponenten in C# und Visual Basic

Weitere Ressourcen

.NET Framework-Unterstützung für Windows Store-Apps und Windows-Runtime