App adattive per la versione

Ogni versione dell'SDK di Windows aggiunge nuove funzionalità che è possibile sfruttare. Tuttavia, non tutti i clienti aggiornano i propri dispositivi alla versione più recente di Windows contemporaneamente. Vuoi che l'app funzioni sulla più ampia gamma possibile di dispositivi, sfruttando al tempo stesso le nuove funzionalità, se disponibili.

Prerequisiti

  • SDK per app di Windows 1.0 o versione successiva
  • Visual Studio 2022 o versione successiva con il carico di lavoro di sviluppo di applicazioni Windows

Overview

Seguire questi tre passaggi per supportare la gamma più ampia di dispositivi Windows:

  1. Configurare il progetto Visual Studio come destinazione delle API più recenti. Ciò influisce su ciò che il compilatore ha accesso in fase di compilazione.
  2. Eseguire controlli di runtime per assicurarsi di chiamare solo le API presenti nel dispositivo in cui viene eseguita l'app.
  3. Testare l'app nella versione minima e nella versione di destinazione di Windows.

Configurare il progetto Visual Studio

Il primo passaggio per supportare più versioni di Windows consiste nel specificare le versioni del sistema operativo/SDK supportate come destinazione e minima nel progetto di Visual Studio.

  • Destinazione: la versione dell'SDK in cui Visual Studio compila il codice dell'app. Tutte le API e le risorse in questa versione dell'SDK sono disponibili nel codice dell'app in fase di compilazione.
  • Minimo : la versione dell'SDK che supporta la versione meno recente del sistema operativo in cui è possibile eseguire l'app.

Durante il runtime, l'app viene eseguita sulla versione del sistema operativo in cui viene distribuita. L'app genera eccezioni se usi API non disponibili in tale versione. Usare i controlli di runtime per chiamare le API corrette, come descritto più avanti in questo articolo.

Tip

Visual Studio non segnala la compatibilità delle API. È responsabilità dell'utente testare e verificare che l'app funzioni correttamente in tutte le versioni del sistema operativo tra e tra cui Minimum e Target.

Quando crei un nuovo progetto in Visual Studio, imposta le versioni Target e Minimum supportate dall'app. Per impostazione predefinita, la versione di destinazione è la versione più recente dell'SDK installata e la versione minima è l'SDK installato più basso.

Per modificare la versione minima e quella di destinazione per un progetto esistente, andare a Project>Proprietà>Applicazione>Targeting.

Eseguire controlli API

La chiave per le app adattive per la versione è la combinazione di contratti API e della classe ApiInformation . Questa classe consente di rilevare se è presente un contratto API, un tipo o un membro specificati in modo da poter effettuare in modo sicuro chiamate API in un'ampia gamma di dispositivi e versioni del sistema operativo.

I contratti delle API

Il set di API all'interno di una famiglia di dispositivi è suddiviso in suddivisioni note come contratti API. Usare il ApiInformation.IsApiContractPresent metodo per verificare la presenza di un contratto API. Ciò è utile quando si vuole testare molte API presenti nella stessa versione di un contratto API.

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

Un contratto API rappresenta una funzionalità, ovvero un set di API correlate che insieme offrono una particolare funzionalità. Una piattaforma che implementa qualsiasi API in un contratto API deve implementare ogni API in tale contratto. Testare il contratto una sola volta e quindi chiamare in modo sicuro una delle relative API.

Il contratto più grande e più comunemente usato è Windows.Foundation.UniversalApiContract, che contiene la maggior parte delle API di Windows Runtime. Per l'elenco dei contratti disponibili, vedi SDK di estensione della famiglia di dispositivi e contratti API.

Codice adattivo di versione e XAML condizionale

Usare la ApiInformation classe in una condizione nel codice per verificare la presenza di un'API prima di chiamarla. Metodi come IsTypePresent, IsEventPresentIsMethodPresent, e IsPropertyPresent consentono di testare la granularità necessaria.

Per altre informazioni ed esempi, vedere Codice adattivo per la versione.

Se la versione minima dell'app è build 17763 (versione 1809) o successiva, puoi usare XAML condizionale per impostare le proprietà e creare un'istanza di oggetti nel markup senza code-behind. XAML condizionale consente di usare ApiInformation.IsApiContractPresent direttamente nel markup.

Per altre informazioni ed esempi, vedi XAML condizionale.

Testare l'app adattabile alle versioni

Quando usi il codice adattivo della versione o XAML condizionale, testa la tua app in un dispositivo che esegue la versione minima e in un dispositivo che esegue la versione di destinazione di Windows.

Non è possibile testare tutti i percorsi di codice condizionale in un singolo dispositivo. Distribuire e testare l'app in un dispositivo remoto (o in una macchina virtuale) che esegue la versione minima supportata del sistema operativo per garantire che tutti i percorsi di codice funzionino correttamente.