Partilhar via


Suporte interno para WinRT é removido do .NET

O suporte interno para consumo de APIs do Tempo de Execução do Windows (WinRT) no .NET foi removido.

Versão introduzida

5.0

Alterar a descrição

Anteriormente, o CoreCLR podia consumir arquivos de metadados do Windows (WinMD) para ativar e consumir tipos WinRT. A partir do .NET 5, o CoreCLR não pode mais consumir arquivos WinMD diretamente.

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

Esta alteração foi feita pelas seguintes razões:

  • Assim, o WinRT pode ser desenvolvido e melhorado separadamente do tempo de execução 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 linguagem intermediária (IL) e compilação antecipada (AOT).
  • Para simplificar a base de código de tempo de execução 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 TargetFramework da propriedade do projeto. Por exemplo:

    <TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
    
  • Se você estiver consumindo um componente de tempo de execução 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 C#, consulte a documentação C #/WinRT .

Para obter mais informações, consulte Chamar APIs do Tempo de Execução do Windows em aplicativos da área de trabalho.

APIs afetadas