Aplicaciones adaptativas a versiones

Cada versión del SDK de Windows agrega nuevas funcionalidades que es posible que quiera aprovechar. Sin embargo, no todos los clientes actualizan sus dispositivos a la versión más reciente de Windows al mismo tiempo. Quieres que tu aplicación funcione en la gama más amplia posible de dispositivos, a la vez que aprovecha las nuevas características cuando estén disponibles.

Siga estos tres pasos para admitir la gama más amplia de dispositivos Windows:

  1. Configure el proyecto de Visual Studio para tener como destino las API más recientes. Esto afecta a lo que el compilador tiene acceso en tiempo de compilación.
  2. Realice comprobaciones en tiempo de ejecución para asegurarse de que solo llama a las API que están presentes en el dispositivo en el que se ejecuta la aplicación.
  3. Pruebe la aplicación en la versión mínima y la versión de destino de Windows.

Configuración del proyecto de Visual Studio

El primer paso para admitir varias versiones de Windows consiste en especificar las versiones de OS o SDK mínimas admitidas en el proyecto de Visual Studio.

  • Objetivo — la versión del SDK con la que Visual Studio compila el código de la aplicación. Todas las API y los recursos de esta versión del SDK están disponibles en el código de la aplicación en tiempo de compilación.
  • Mínimo : la versión del SDK que admite la versión más antigua del sistema operativo en la que se puede ejecutar la aplicación.

Durante el tiempo de ejecución, la aplicación se ejecuta en la versión del sistema operativo en la que se implementa. La aplicación produce excepciones si usa API que no están disponibles en esa versión. Use comprobaciones en tiempo de ejecución para llamar a las API correctas, como se describe más adelante en este artículo.

Tip

Visual Studio no le advierte sobre la compatibilidad de api. Es su responsabilidad probar y verificar que su aplicación funcione correctamente en todas las versiones del sistema operativo comprendidas entre la versión mínima y la de destino, ambas incluidas.

Al crear un nuevo proyecto en Visual Studio, establezca las versiones Target y Minimum que admite la aplicación. De forma predeterminada, la versión de destino es la versión del SDK instalada más alta y la versión mínima es el SDK más bajo instalado.

Para cambiar la versión mínima y la versión de destino de un proyecto existente, vaya a Proyecto>Propiedades>Aplicación>Destinos.

Realización de comprobaciones de API

La clave de las aplicaciones adaptables para versiones es la combinación de contratos de API y la clase ApiInformation . Esta clase le permite detectar si hay un contrato de API, un tipo o un miembro especificados para que pueda realizar llamadas API de forma segura en una variedad de dispositivos y versiones del sistema operativo.

Contratos de API

El conjunto de API dentro de una familia de dispositivos se divide en subdivisiones conocidas como contratos de API. Use el ApiInformation.IsApiContractPresent método para probar la presencia de un contrato de API. Esto resulta útil cuando desea probar muchas API que existen en la misma versión de un contrato de API.

bool isScannerContractPresent =
    Windows.Foundation.Metadata.ApiInformation.IsApiContractPresent(
        "Windows.Devices.Scanners.ScannerDeviceContract", 1);

Un contrato de API representa una característica: un conjunto de API relacionadas que proporcionan una funcionalidad determinada. Una plataforma que implemente cualquier API de un contrato de API debe implementar todas las API de ese contrato. Pruebe el contrato una vez y llame a cualquiera de sus API de forma segura.

El contrato más grande y más usado es Windows.Foundation.UniversalApiContract, que contiene la mayoría de las API de Windows Runtime. Para obtener una lista de los contratos disponibles, consulte SDK de extensión de familia de dispositivos y contratos de API.

Código adaptable de versión y XAML condicional

Use la ApiInformation clase en una condición del código para probar la presencia de una API antes de llamarla. Los métodos como IsTypePresent, IsEventPresent, IsMethodPresenty IsPropertyPresent permiten probar la granularidad que necesita.

Para obtener más información y ejemplos, consulte código adaptable a la versión.

Si la versión mínima de la aplicación es la compilación 17763 (versión 1809) o posterior, puedes usar XAML condicional para establecer propiedades y crear instancias de objetos en marcado sin código subyacente. El XAML condicional permite usar ApiInformation.IsApiContractPresent directamente en el marcado.

Para obtener más información y ejemplos, consulta Xaml condicional.

Prueba tu aplicación adaptable a versiones

Cuando usas código adaptable de versión o XAML condicional, prueba la aplicación en un dispositivo que ejecuta la versión mínima y en un dispositivo que ejecuta la versión de destino de Windows.

No se pueden probar todas las rutas condicionales de código en un solo dispositivo. Implemente y pruebe la aplicación en un dispositivo remoto (o máquina virtual) que ejecute la versión mínima admitida del sistema operativo para asegurarse de que todas las rutas de acceso de código funcionan correctamente.