Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo configurar los proyectos de aplicación de escritorio para llamar a las API de Windows Runtime (WinRT), las API que potencian las características modernas de Windows, como notificaciones, selectores de archivos, uso compartido y mucho más.
Nota:
Algunas API de WinRT no se admiten en aplicaciones de escritorio. Para obtener más información, consulte Compatibilidad con las API de WinRT en aplicaciones de escritorio.
Configuración de un proyecto de .NET
.NET 6 y versiones posteriores: use la opción Moniker de la plataforma de destino
Especifique un Target Framework Moniker (TFM) específico de la versión del sistema operativo Windows en el archivo de proyecto. Esto agrega una referencia al paquete de destino Windows SDK adecuado en tiempo de compilación.
En Visual Studio, seleccione Project > [ProjectName] Properties.
En la página de propiedades, busque Application > General ; para ello, selecciónelo en el panel de navegación izquierdo o desplácese hacia él.
Elija la configuración para:
- Target framework: se establece inicialmente en la versión de .NET que seleccionó cuando se creó el proyecto, pero puede cambiarlo aquí.
- Target OS : deje este valor establecido en Windows.
- Versión del sistema operativo de destino: seleccione la versión del conjunto de API que desea usar, normalmente la más reciente.
- Versión del sistema operativo compatible (opcional): consulte la sección siguiente para obtener más información.
En el Moniker de la plataforma de destino, estos valores se traducen de la siguiente manera:
-
Marco de trabajo objetivo -
net10.0 -
SO de destino -
-windows -
Versión del sistema operativo de destino -
10.0.22621.0
<TargetFramework>net10.0-windows10.0.22621.0</TargetFramework>
<!-- If set... -->
<SupportedOSPlatformVersion>10.0.19041.0</SupportedOSPlatformVersion>
También puede establecer los valores editando manualmente el archivo del proyecto.
En Visual Studio, haga clic con el botón derecho en su proyecto en Explorador de soluciones y elija Editar archivo de proyecto.
Reemplace el valor TargetFramework por un TFM específico de la versión de Windows.
Target TFM Windows 11, versión 24H2 net10.0-windows10.0.26100.0Windows 11, versión 22H2 net10.0-windows10.0.22621.0Windows 11 (versión inicial) net10.0-windows10.0.22000.0Windows 10, versión 2004 net10.0-windows10.0.19041.0Windows 10, versión 1903 net10.0-windows10.0.18362.0Windows 10, versión 1809 net10.0-windows10.0.17763.0Nota:
Los valores mostrados son para .NET 10. Actualice según sea necesario para otras versiones de .NET:
net8.0,net9.0.Ejemplo:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework> </PropertyGroup> </Project>Guarde y cierre el archivo del proyecto.
Sugerencia
La versión especificada por el TFM indica qué API están disponibles para la aplicación. No controla la versión del sistema operativo que la aplicación admite en tiempo de ejecución. Se usa para seleccionar los ensamblados de referencia en los que se compila el proyecto, y para seleccionar recursos de paquetes NuGet. Piense en esta versión como "versión de plataforma" o "versión de API del sistema operativo" para eliminar la ambigüedad de la versión del sistema operativo en tiempo de ejecución. Para obtener más información, consulte Plataformas de destino: versión del sistema operativo en TFMs.
Compatibilidad con una versión mínima de Windows
Para permitir que la aplicación se ejecute en una versión de Windows anterior al destino de TFM, establezca el SupportedOSVersion (SupportedOSPlatformVersion), como se muestra en la sección anterior. Para obtener más información, consulte Plataformas de destino: Compatibilidad con versiones anteriores del sistema operativo.
Cuando tienes como objetivo un intervalo de versiones del sistema operativo, protege las llamadas a las API que no están disponibles en todas las versiones mediante comprobaciones con ApiInformation. Para más información, consulte Aplicaciones adaptativas de versiones.
Cuando se establece SupportedOSVersion, Visual Studio mostrará una advertencia para las API que necesitan una comprobación en tiempo de ejecución. Por ejemplo, si la versión de destino es 19041 y la versión mínima es 17763, verá una advertencia similar a esta cuando llame a AppInfo.Current.
CA1416 Using platform dependent API on a component makes the code no longer work across all platforms.
This call site is reachable on: 'Windows' 10.0.17763.0 and later. 'AppInfo.Current' is only supported on: 'Windows' 10.0.19041.0 and later.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
<SupportedOSPlatformVersion>10.0.17763.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
</PropertyGroup>
</Project>
Nota:
También puede agregar manualmente TargetPlatformMinVersion, pero esto no proporciona advertencias en tiempo de compilación en Visual Studio.
Las API de WinRT no se admiten en .NET 6 y versiones posteriores
En .NET 6 y versiones posteriores, varias API de WinRT en el espacio de nombres Windows.UI no son compatibles. Use las API equivalentes en el Microsoft. Ui espacio de nombres (proporcionado por el SDK de Aplicaciones para Windows) en su lugar:
| Unsupported | Use en su lugar |
|---|---|
Windows.UI.Colors |
Microsoft.UI.Colors |
Windows.UI.ColorHelper |
Microsoft.UI.ColorHelper |
Windows.UI.Text (la mayoría de los tipos) |
Microsoft.UI.Text |
Windows.UI.Xaml (todos los tipos) |
Microsoft.UI.Xaml |
.NET Core 3.x o .NET Framework: instalación del paquete NuGet
Si la aplicación tiene como destino .NET Core 3.x o .NET Framework, instale el paquete NuGet Microsoft.Windows.SDK.Contracts:
En Visual Studio, haga clic con el botón derecho en el proyecto y elija Administrar paquetes NuGet.
Busque
Microsoft.Windows.SDK.Contracts.Seleccione la versión del paquete que coincida con el destino mínimo de Windows:
Versión del paquete objetivo de Windows 10.0.19041.xxxx Windows 10, versión 2004 10.0.18362.xxxx Windows 10, versión 1903 10.0.17763.xxxx Windows 10, versión 1809 10.0.17134.xxxx Windows 10, versión 1803 Haga clic en Instalar.
Compatibilidad con varias versiones de .NET 6+ y anteriores
Configure el archivo de proyecto para usar el enfoque TFM para .NET 6+ y el paquete NuGet para versiones anteriores:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFrameworks>netcoreapp3.1;net8.0-windows10.0.19041.0</TargetFrameworks>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Condition="'$(TargetFramework)' == 'netcoreapp3.1'"
Include="Microsoft.Windows.SDK.Contracts"
Version="10.0.19041.0"/>
</ItemGroup>
</Project>
Compilación condicional
Cuando se apunte a múltiples versiones desde .NET 6+ y anteriores, use la compilación condicional para escribir código específico de la versión en un solo proyecto. Para obtener más información, consulte Marcos de destino : símbolos del preprocesador.
#if NET6_0_OR_GREATER
// Code that uses .NET 6+ APIs or TFM-available WinRT APIs
#else
// Fallback code for .NET Core 3.x / .NET Framework
#endif
Configurar un proyecto de C++ (Win32)
Use C++/WinRT para consumir api de WinRT desde aplicaciones de escritorio de C++.
- Instale el Microsoft.Windows. CppWinRT paquete NuGet.
- Dado que C++/WinRT usa características del estándar de C++17, asegúrese de que la propiedad del proyecto C/C++ > Language > C++ Language Standard está establecida en ISO C++17 Standard (/std:c++17) o posterior en Visual Studio.
Para obtener más información, consulte Visual Studio compatibilidad con C++/WinRT.
Pasos siguientes
Ahora puede llamar a Windows Runtime (WinRT) API desde el SDK de Windows.
Para llamar también a las API de WinRT desde el SDK de Aplicaciones para Windows, consulte Usar el SDK de Aplicaciones para Windows en un proyecto existente.
Algunas API de WinRT requieren la identidad del paquete. Para obtener más información, consulte:
- Introducción al empaquetado
- Características que requieren la identidad del paquete
- Empaqueta tu aplicación utilizando un MSIX de proyecto único
- Concesión de identidad a una aplicación no empaquetada