Versões do Windows e visão geral do SDK

Quando começar a construir aplicações Windows, vai notar referências a vários números de versão diferentes — a versão do Windows OS, o Windows SDK e o SDK de Aplicações Windows. Não te preocupes: para a maioria dos projetos novos, o Visual Studio define padrões sensatos e nem precisas de pensar nisso. Mas quando precisas de direcionar uma versão específica do sistema operativo, perceber porque é que uma API não está disponível ou configurar o ficheiro do teu projeto, este artigo explica como as peças se encaixam e que escolhas fazer.

Definições

Component O que é Formato da versão Como é atualizado
Versão do Windows OS O sistema operativo instalado no dispositivo do utilizador. YYHX (por exemplo, 24H2, 25H2) Windows Update (atualizações anuais de funcionalidades)
Windows SDK (plataforma SDK) Cabeçalhos, bibliotecas e metadados para APIs Win32, WinRT e COM. 10.0.BBBBB.x (por exemplo, 10.0.26100.0) Instalado com Visual Studio ou instalador independente
SDK de aplicativos do Windows framework distribuído via NuGet que fornece o WinUI 3, o ciclo de vida da aplicação, a gestão de janelas e outras funcionalidades modernas para aplicações. Major.Minor.Patch (por exemplo, 1.8.1) Atualização do pacote NuGet no seu projeto

Nomeação das versões do Windows OS

O Windows 11 traz atualizações importantes de funcionalidades usando o padrão de nomenclatura YYHX:

  • YY = ano civil de dois dígitos
  • H1 = primeira metade do ano; H2 = segunda metade do ano

A maioria dos lançamentos principais historicamente foi lançada no outono (H2), mas também ocorrem lançamentos H1.

Versão do sistema operacional Windows Ano de lançamento Número de compilação do SO
Windows 11 22H2 2022 22621
Windows 11 23H2 2023 22631
Windows 11 24H2 2024 26100

Regra: O número de compilação do sistema operativo no dispositivo do utilizador determina quais as APIs da plataforma disponíveis em tempo de execução.

Sugestão

Verifique o número de build do sistema operativo em qualquer dispositivo pressionando Win + R e escrevendo winver.

Mapeamento do SDK do Windows para a versão do sistema operativo

Cada família de versões de SDK do Windows corresponde a uma versão do sistema operativo Windows. O número de compilação principal do SDK normalmente corresponde ao número de compilação do sistema operativo, embora algumas atualizações de funcionalidades do sistema operativo (entregues como pacotes de habilitação) partilhem a mesma família de SDKs de uma versão anterior.

Família de SDK Windows Compilação do SO Corresponde à versão Windows
10.0.22621.x 22621 Windows 11 22H2 / 23H2
10.0.26100.x 26100 Windows 11 24H2

Note

Dentro de uma família de SDKs, o último componente (por exemplo, 10.0.26100.2454) representam atualizações mensais de manutenção que adicionam correções de bugs mas não novas APIs.

Regra: Instalar um determinado SDK Windows concede acesso em tempo de compilação a todas as APIs dessa versão do sistema operativo e de todas as versões anteriores. As APIs são cumulativas.

Versões do SDK de Aplicações Windows

O SDK de Aplicações Windows é independente tanto do sistema operativo Windows como do Windows SDK. É disponibilizado ao seu próprio ritmo como um pacote NuGet.

SDK de aplicativos do Windows Data de lançamento SO mínimo suportado Pacote NuGet
2.2 2026-06-09 Windows 10 1809 (versão 17763) Microsoft.WindowsAppSDK 2.2.x
2.1 2026-05-21 Windows 10 1809 (versão 17763) Microsoft.WindowsAppSDK 2.1.x
2.0 2026-04-29 Windows 10 1809 (versão 17763) Microsoft.WindowsAppSDK 2.0.x
1.8 2025-09-09 Windows 10 1809 (versão 17763) Microsoft.WindowsAppSDK 1.8.x
1.7 2025-03-18 Windows 10 1809 (versão 17763) Microsoft.WindowsAppSDK 1.7.x

Regra: Pode usar o mais recente SDK de Aplicações Windows em versões antigas do sistema operativo (de volta ao mínimo declarado). A versão do SDK de Aplicações Windows NÃO precisa de corresponder à versão do Windows OS ou ao Windows SDK.

Para a matriz completa de suporte, consulte versões Windows suportadas pelo SDK de Aplicações Windows.

Como os três componentes se relacionam

Your App (.exe / .msix)
  │
  ├── References: Windows App SDK (NuGet package, e.g., 2.2)
  │     • Provides: WinUI 3, app lifecycle, windowing, push notifications
  │     • Updated: independently via NuGet
  │     • Constraint: has a minimum supported OS version
  │
  ├── Compiled against: Windows SDK (e.g., 10.0.26100)
  │     • Provides: Win32, WinRT, COM API declarations
  │     • Updated: with Visual Studio or standalone installer
  │     • Constraint: determines which APIs are visible at compile time
  │
  └── Runs on: Windows OS (e.g., Windows 11 24H2, build 26100)
        • Provides: actual API implementations at runtime
        • Updated: Windows Update
        • Constraint: determines which APIs are callable at runtime

Relações-chave:

  1. O SDK de Aplicações Windows não substitui o Windows SDK — precisa de ambos.
  2. A versão do SDK do Windows pode ser mais recente do que o sistema operativo onde a tua aplicação corre (usa verificações de runtime para APIs mais recentes).
  3. A versão do SDK de Aplicações Windows é completamente independente — atualize-a sem alterar mais nada.
  4. Não podes chamar uma API de plataforma em tempo de execução se a build do sistema operativo do utilizador for mais antiga do que a build que a introduziu, independentemente do SDK contra o qual compilaste.

Configuração do arquivo de projeto

As propriedades do MSBuild no ficheiro de projeto controlam a plataforma de destino. Os nomes das propriedades diferem ligeiramente entre C# e C++:

Ficheiro de projeto C# (.csproj)

Em projetos .NET ao estilo SDK (usados pelos modelos WinUI 3 e SDK de Aplicações Windows), a versão da plataforma Windows está incorporada no Target Framework Moniker (TFM):

<PropertyGroup>
    <!-- The TFM includes the Windows SDK version you compile against -->
    <TargetFramework>net8.0-windows10.0.26100.0</TargetFramework>

    <!-- The minimum OS version your app supports -->
    <SupportedOSPlatformVersion>10.0.19041.0</SupportedOSPlatformVersion>

    <!-- Or equivalently: -->
    <!-- <TargetPlatformMinVersion>10.0.19041.0</TargetPlatformMinVersion> -->
</PropertyGroup>

<ItemGroup>
    <!-- Windows App SDK (independent of the above) -->
    <PackageReference Include="Microsoft.WindowsAppSDK" Version="2.2.0" />
</ItemGroup>

Note

SupportedOSPlatformVersion e TargetPlatformMinVersion são equivalentes em projetos ao estilo SDK. O analisador de compatibilidade da plataforma SDK .NET usa SupportedOSPlatformVersion para emitir avisos em tempo de compilação quando chama APIs que podem não estar disponíveis na versão mínima do seu sistema operativo.

Ficheiro de projeto C++ (.vcxproj)

<PropertyGroup>
    <!-- Note: C++ uses "WindowsTargetPlatform" prefix -->
    <WindowsTargetPlatformVersion>10.0.26100.0</WindowsTargetPlatformVersion>
    <WindowsTargetPlatformMinVersion>10.0.17763.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
Propriedade (C#) Purpose Efeito caso esteja definido para um valor demasiado alto Efeito se estiver definido demasiado baixo
Versão Windows no TFM (TargetFramework) Superfície da API em tempo de compilação Permite avisos de analisadores de plataforma (uma vantagem, não um problema) As APIs mais recentes são invisíveis; erros de compilador se os referenciar
SupportedOSPlatformVersion / TargetPlatformMinVersion Sistema operativo mínimo para instalação Menos utilizadores podem instalar a sua aplicação Deve adicionar verificações de runtime antes de chamar APIs mais recentes
Versão Microsoft.WindowsAppSDK WinUI 3 e funcionalidades do framework N/A (utilizar a versão estável mais recente) Faltam os controlos mais recentes do WinUI ou funcionalidades do framework

Guia de decisão: escolher versões

Use as seguintes regras para selecionar versões para um novo projeto:

  1. Defina a versão da plataforma Windows no seu TFM para o mais recente SDK estável do Windows (por exemplo, net8.0-windows10.0.26100.0). Isto dá-lhe a superfície mais ampla de APIs em tempo de compilação e permite avisos de análise de compatibilidade de plataforma para APIs indisponíveis no seu sistema operativo mínimo.
  2. Define SupportedOSPlatformVersion (ou TargetPlatformMinVersion) com base no teu público:
    • Aplicações empresariais com dispositivos geridos: correspondam ao sistema operativo mínimo suportado pela sua organização.
    • Aplicações de consumo (maior alcance): 10.0.19041.0 (Windows 10 2004) ou 10.0.17763.0 (Windows 10 1809).
    • Aplicações que usam funcionalidades de uma versão específica do sistema operativo: definidas para o número de compilação dessa versão.
  3. Use sempre o mais recente SDK de Aplicações Windows estável. Não há penalização de compatibilidade; suporta até ao Windows 10 1809.
  4. Nunca uses versões de pré-visualização/SDK experimentais em produção.

Verificações de disponibilidade da API em tempo de execução

Quando a versão da plataforma Windows no seu TFM é superior a SupportedOSPlatformVersion, algumas APIs visíveis em tempo de compilação podem não existir no dispositivo do utilizador. O analisador de compatibilidade da plataforma .NET alerta para estas situações em tempo de compilação, mas tem de verificar também a disponibilidade em tempo de execução antes de as invocar.

Padrão: Verifique o contrato da API (APIs WinRT)

using Windows.Foundation.Metadata;

if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 15))
{
    // Safe to call APIs introduced in this contract version.
    // For example, use a newer composition API:
}
else
{
    // Fallback for older OS versions
}

Padrão: Verificar se existe um tipo específico

if (ApiInformation.IsTypePresent("Windows.UI.Composition.SceneVisual"))
{
    // Safe to use SceneVisual
}

Padrão: Verifique um método específico

if (ApiInformation.IsMethodPresent("Windows.Storage.StorageFile", "GetFileFromPathForUserAsync"))
{
    // Safe to call this method
}

Regra: Se saltar estas verificações e chamar uma API indisponível, a aplicação falhará em tempo de execução. A falha exata depende do tipo de API — exceções comuns incluem TypeLoadException, MissingMethodException, ou um erro específico da plataforma.

Perguntas frequentes

"Que SDK do Windows devo usar?"

Use o mais recente SDK do Windows disponível (atualmente 10.0.26100). Podes sempre compilar contra um SDK mais recente do que o teu mínimo alvo — isso só afeta o que está visível em tempo de compilação.

Preciso de atualizar o SDK do Windows quando atualizo o SDK de Aplicações Windows?

Não. São independentes. Podes atualizar Microsoft.WindowsAppSDK da versão 1.7 para a 1.8 sem mudar a versão do SDK do Windows.

"A minha aplicação tem como alvo o Windows 10. Posso usar o SDK de Aplicações Windows?"

Yes. O SDK de Aplicações Windows suporta o Windows 10 versão 1809 (versão 17763) e posteriores. Ajusta o teu SupportedOSPlatformVersion em conformidade.

O que acontece se eu compilar com o SDK 10.0.26100, mas o utilizador estiver a executar o Windows 11 22H2 (build 22621)?

As APIs introduzidas entre a build 22621 e a 26100 estarão visíveis no teu código, mas falharão em tempo de execução a menos que adiciones verificações de disponibilidade de API. APIs de 22621 e anteriores funcionam normalmente.

"Como é que sei qual o número de build que introduziu uma API específica?"

Consulte a página de referência da API no Microsoft Learn. A secção de Requisitos lista a construção mínima do sistema operativo (como uma versão do contrato API ou versão do Windows).

Resumo das regras

Regra Description
Versão do SO = capacidade de execução A build do sistema operativo do utilizador determina quais as APIs que realmente funcionam em tempo de execução.
SDK do Windows = interface em tempo de compilação O SDK que instala determina quais as APIs visíveis no seu código.
SDK de Aplicações Windows = framework de aplicação Atualizado via NuGet, independentemente das versões do sistema operativo e do SDK da plataforma.
SDK ≥ sistema operativo é seguro Podes compilar contra um SDK mais recente do que o teu target mínimo do sistema operativo.
São necessárias verificações em tempo de execução Se o teu TFM tiver como destino uma versão do Windows superior à SupportedOSPlatformVersion, proteja as chamadas à API mais recentes com verificações em tempo de execução.
SDK de Aplicações Windows retrocompatibilidade O SDK de Aplicações Windows suporta desde o Windows 10 1809, independentemente da sua versão de lançamento.