Suporte interno para WinRT removido do .NET

Suporte interno para consumo de APIs do WinRT (Windows Runtime) no .NET removido.

Versão introduzida

5,0

Descrição das alterações

Anteriormente, o CoreCLR poderia consumir arquivos WinMD (metadados do Windows) para ativar e consumir tipos WinRT. Do .NET 5 em diante, o CoreCLR não pode mais consumir arquivos WinMD diretamente.

Se você tentar fazer referência a um assembly sem suporte, obterá um FileNotFoundException. Se você ativar uma classe WinRT, obterá um PlatformNotSupportedException.

Essa alteração interruptiva foi feita pelos seguintes motivos:

  • Portanto, o WinRT pode ser desenvolvido e aprimorado separadamente do runtime do .NET.
  • Para simetria com sistemas de interoperabilidade fornecidos para outros sistemas operacionais, como iOS e Android.
  • Para aproveitar outros recursos do .NET, como recursos de C#, corte de IL (linguagem intermediária) e compilação AOT (antecipada).
  • Para simplificar a base de código do runtime do .NET.
  • Remova as referências ao pacote Microsoft.Windows.SDK.Contracts. Em vez disso, especifique a versão das APIs do Windows que você deseja acessar por meio da propriedade TargetFramework do projeto. Por exemplo:

    <TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
    
  • Se você estiver consumindo um componente de runtime de terceiros definido em um arquivo .winmd, adicione uma referência ao pacote NuGet Microsoft.Windows.CsWinRT. Para obter informações sobre como gerar a projeção em C#, confira a documentação C#/WinRT.

Para obter mais informações, confira Chamar APIs do Windows Runtime em aplicativos desktop.

APIs afetadas