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.
Ação recomendada
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.