Diferencias con WPF .NET

En este artículo se describen las diferencias entre Windows Presentation Foundation (WPF) en .NET y .NET Framework. WPF para .NET es un marco de código abierto bifurcado desde el código fuente original de WPF para .NET Framework.

Hay algunas características de .NET Framework que .NET no admite. Para obtener más información sobre las tecnologías no admitidas, consulte Tecnologías de .NET Framework no disponibles en .NET.

Importante

La documentación de la guía de escritorio para .NET 7 y .NET 6 está en proceso de elaboración.

Proyectos de estilo SDK

.NET usa archivos de proyecto de estilo SDK. Estos archivos de proyecto son diferentes de los archivos de proyecto de .NET Framework tradicionales administrados por Visual Studio. Para migrar las aplicaciones WPF de .NET Framework a .NET, debe convertir los proyectos. Para obtener más información, consulte Actualización de una aplicación de escritorio de WPF a .NET 7.

Referencias de paquetes de NuGet

Si la aplicación de .NET Framework refleja sus dependencias de NuGet en un archivo packages.config, migre al formato <PackageReference>:

  1. En Visual Studio, abra el panel del Explorador de soluciones.
  2. En el proyecto de WPF, haga clic con el botón derecho en packages.config>Migrar packages.config a PackageReference.

Actualización a PackageReference.

Se abrirá un cuadro de diálogo en el que se muestran las dependencias de NuGet de nivel superior calculadas y en el que se pregunta por otros paquetes NuGet que se deban promover al nivel superior. Seleccione Aceptar; el archivo packages.config se quitará del proyecto y se agregarán elementos <PackageReference> al archivo de proyecto.

Cuando el proyecto usa <PackageReference>, los paquetes no se almacenan localmente en una carpeta Packages, sino que se almacenan de forma global. Abra el archivo de proyecto y quite los elementos <Analyzer> que se remitan a la carpeta Packages. Estos analizadores se incluyen automáticamente con las referencias del paquete NuGet.

Seguridad de acceso del código

El componente .NET no admite la seguridad de acceso del código (CAS). Toda la funcionalidad relativa a CAS se tratará como si fuera de plena confianza. WPF para .NET quita el código relacionado con CAS. La superficie de API pública de estos tipos seguirá existiendo para garantizar que las llamadas a estos tipos se efectúan correctamente.

Los tipos de CAS definidos públicamente se han extraído de los ensamblados de WPF y se han incluido en los ensamblados principales de la biblioteca de .NET. Los ensamblados de WPF tienen el reenvío de tipos establecido en la nueva ubicación de los tipos desplazados.

Ensamblado de origen Ensamblado de destino Tipo
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

Nota

A fin de minimizar posibles complicaciones durante el cambio, en el tipo XamlAccessLevel se ha conservado la funcionalidad para almacenar y recuperar información relativa a las siguientes propiedades.

  • PrivateAccessToTypeName
  • AssemblyNameString