Unterschiede in WPFDifferences in WPF

In diesem Artikel werden die Unterschiede in .NET Core und dem .NET Framework bezüglich Windows Presentation Foundation (WPF) beschrieben.This article describes the differences between Windows Presentation Foundation (WPF) on .NET Core and .NET Framework. WPF für .NET Core ist ein Open-Source-Framework, das aus dem Quellcode des ursprünglichen WPF-Systems für das .NET Framework geforkt wurde.WPF for .NET Core is an open-source framework forked from the original WPF for .NET Framework source code.

Einige Features des .NET Framework werden jedoch von .NET Core nicht unterstützt.There are a few features of .NET Framework that .NET Core doesn't support. Weitere Informationen zu nicht unterstützten Technologien finden Sie unter .NET Framework-Technologien, die auf .NET Core nicht verfügbar sind.For more information on unsupported technologies, see .NET Framework technologies unavailable on .NET Core.

Wichtig

Der Desktopleitfaden ist in Bearbeitung.The Desktop Guide documentation is under construction.

Projekte im SDK-FormatSDK-style projects

.Net Core verwendet Projektdateien im SDK-Stil..NET Core uses SDK-style project files. Diese Projektdateien unterscheiden sich von herkömmlichen .NET Framework-Projektdateien, die von Visual Studio verwaltet werden.These project files are different from the traditional .NET Framework project files managed by Visual Studio. Sie müssen Ihre Projekte konvertieren, wenn Sie Ihre .NET Framework-WPF-Apps zu .NET Core migrieren möchten.To migrate your .NET Framework WPF apps to .NET Core, you must convert your projects. Weitere Informationen finden Sie unter Migrieren von WPF-Apps zu .NET Core.For more information, see Migrate WPF apps to .NET Core 3.0.

NuGet-PaketverweiseNuGet package references

Wenn Ihre .NET Framework-App ihre NuGet-Abhängigkeiten in einer packages.config-Datei auflistet, migrieren Sie zum Format <PackageReference>:If your .NET Framework app lists its NuGet dependencies in a packages.config file, migrate to the <PackageReference> format:

  1. Öffnen Sie in Visual Studio den Bereich Projektmappen-Explorer.In Visual Studio, open the Solution Explorer pane.
  2. Klicken Sie in Ihrem WPF-Projekt mit der rechten Maustaste auf packages.config > "packages.config" zu PackageReference migrieren.In your WPF project, right-click packages.config > Migrate packages.config to PackageReference.

Aktualisieren auf 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.A dialog will appear showing calculated top-level NuGet dependencies and asking which other NuGet packages should be promoted to top level. Klicken Sie auf OK. Die packages.config-Datei wird daraufhin aus dem Projekt entfernt, und der Projektdatei werden <PackageReference>-Elemente hinzugefügt.Select OK and the packages.config file will be removed from the project and <PackageReference> elements will be added to the project file.

Wenn Ihr Projekt <PackageReference> verwendet, werden Pakete nicht lokal in einem Packages-Ordner gespeichert, sondern global.When your project uses <PackageReference>, packages aren't stored locally in a Packages folder, they're stored globally. Öffnen Sie die Projektdatei, und entfernen Sie alle <Analyzer>-Elemente, die auf den Packages-Ordner verweisen.Open the project file and remove any <Analyzer> elements that referred to the Packages folder. Diese Analysetools sind automatisch in den NuGet-Paketverweisen enthalten.These analyzers are automatically included with the NuGet package references.

CodezugriffssicherheitCode Access Security

Die Codezugriffssicherheit (Code Access Security, CAS) wird weder von .NET Core noch von WPF für .NET Core unterstützt.Code Access Security (CAS) is not supported by .NET Core or WPF for .NET Core. Alle CAS-bezogenen Funktionen gelten als vollständig vertrauenswürdig.All CAS-related functionality is treated under the assumption of full-trust. In WPF für .NET Core wird CAS-bezogener Code entfernt.WPF for .NET Core removes CAS-related code. Die öffentliche API-Oberfläche dieser Typen ist weiterhin vorhanden. Damit wird sichergestellt, dass die Aufrufe dieser Typen erfolgreich sind.The public API surface of these types still exists to ensure that calls into these types succeed.

Öffentlich definierte CAS-bezogene Typen wurden aus den WPF-Assemblys und in die wichtigsten .NET-Bibliotheksassemblys verschoben.Publicly defined CAS-related types were moved out of the WPF assemblies and into the Core .NET library assemblies. Für die WPF-Assemblys ist die Typweiterleitung an den neuen Speicherort der verschobenen Typen festgelegt.The WPF assemblies have type-forwarding set to the new location of the moved types.

QuellassemblySource assembly ZielassemblyTarget assembly TypType
WindowsBase.dllWindowsBase.dll System.Security.Permissions.dllSystem.Security.Permissions.dll MediaPermission
MediaPermissionAttribute
MediaPermissionAudio
MediaPermissionImage
MediaPermissionVideo
WebBrowserPermission
WebBrowserPermissionAttribute
WebBrowserPermissionLevel
System.Xaml.dllSystem.Xaml.dll System.Security.Permissions.dllSystem.Security.Permissions.dll XamlLoadPermission
System.Xaml.dllSystem.Xaml.dll System.Windows.Extension.dllSystem.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.In order to minimize porting friction, the functionality for storing and retrieving information related to the following properties was retained in the XamlAccessLevel type.

  • PrivateAccessToTypeName
  • AssemblyNameString

Nächste SchritteNext steps