Unterschiede zu WPF .NET

In diesem Artikel werden die Unterschiede in .NET 5 (oder .NET Core 3.1) und .NET Framework bezüglich Windows Presentation Foundation (WPF) beschrieben. WPF für .NET 5 ist ein Open-Source-Framework, das aus dem Quellcode des ursprünglichen WPF-Systems für .NET Framework geforkt wurde.

Einige Features von .NET Framework werden jedoch von .NET 5 nicht unterstützt. Weitere Informationen zu nicht unterstützten Technologien finden Sie unter .NET Framework-Technologien, die in .NET 5 und .NET Core nicht verfügbar sind.

Wichtig

Die Dokumentation zum Desktopleitfaden für .NET 6 und .NET 5 (einschließlich .NET Core 3.1) wird derzeit erstellt.

Projekte im SDK-Format

.NET 5 verwendet Projektdateien im SDK-Stil. Diese Projektdateien unterscheiden sich von herkömmlichen .NET Framework-Projektdateien, die von Visual Studio verwaltet werden. Sie müssen Ihre Projekte konvertieren, wenn Sie Ihre .NET Framework-WPF-Apps zu .NET 5 migrieren möchten. Weitere Informationen finden Sie unter Migrieren von WPF-Apps zu .NET 5.

NuGet-Paketverweise

Wenn Ihre .NET Framework-App ihre NuGet-Abhängigkeiten in einer packages.config-Datei auflistet, migrieren Sie zum Format <PackageReference>:

  1. Öffnen Sie in Visual Studio den Bereich Projektmappen-Explorer.
  2. Klicken Sie in Ihrem WPF-Projekt mit der rechten Maustaste auf packages.config>"packages.config" zu PackageReference migrieren.

Upgrading to PackageReference

Es wird ein Dialogfeld mit berechneten NuGet-Abhängigkeiten auf oberster Ebene angezeigt, und Sie werden gefragt, welche anderen NuGet-Pakete auf die oberste Ebene höher gestuft werden sollen. Klicken Sie auf OK. Die packages.config-Datei wird daraufhin aus dem Projekt entfernt, und der Projektdatei werden <PackageReference>-Elemente hinzugefügt.

Wenn Ihr Projekt <PackageReference> verwendet, werden Pakete nicht lokal in einem Packages-Ordner gespeichert, sondern global. Öffnen Sie die Projektdatei, und entfernen Sie alle <Analyzer>-Elemente, die auf den Packages-Ordner verweisen. Diese Analysetools sind automatisch in den NuGet-Paketverweisen enthalten.

Codezugriffssicherheit

Die Codezugriffssicherheit (Code Access Security, CAS) wird von .NET 5 nicht unterstützt. Alle CAS-bezogenen Funktionen gelten als vollständig vertrauenswürdig. In WPF für .NET 5 wird CAS-bezogener Code entfernt. Die öffentliche API-Oberfläche dieser Typen ist weiterhin vorhanden. Damit wird sichergestellt, dass die Aufrufe dieser Typen erfolgreich sind.

Öffentlich definierte CAS-bezogene Typen wurden aus den WPF-Assemblys und in die wichtigsten .NET-Bibliotheksassemblys verschoben. Für die WPF-Assemblys ist die Typweiterleitung an den neuen Speicherort der verschobenen Typen festgelegt.

Quellassembly Zielassembly Typ
WindowsBase.dll System.Security.Permissions.dll MediaPermission
MediaPermissionAttribute
MediaPermissionAudio
MediaPermissionImage
MediaPermissionVideo
WebBrowserPermission
WebBrowserPermissionAttribute
WebBrowserPermissionLevel
System.Xaml.dll System.Security.Permissions.dll XamlLoadPermission
System.Xaml.dll System.Windows.Extension.dll XamlAccessLevel

Hinweis

Die Funktionalität für das Speichern und Abrufen von Informationen über die folgenden Eigenschaften wurde im XamlAccessLevel-Typ beibehalten, um die Probleme bei der Portierung so gering wie möglich zu halten.

  • PrivateAccessToTypeName
  • AssemblyNameString

Nächste Schritte