Compartilhar via


APIs de nome forte geram PlatformNotSupportedException

Algumas APIs que não têm suporte no .NET/.NET Core, mas não fizeram nada quando acessadas, foram alteradas para agora gerar um PlatformNotSupportedException tempo de execução. Anteriormente, usar essas APIs eventualmente resultaria em uma exceção em tempo de execução além disso; a exceção agora é gerada quando o tipo é instanciado ou acessado pela primeira vez.

Comportamento anterior

Em versões anteriores, a chamada de AssemblyName.KeyPair ou StrongNameKeyPair(Byte[]) não era uma operação. Chamar StrongNameKeyPair(FileStream) lia o fluxo, mas de outra forma não fazia nada.

Novo comportamento

A partir do .NET 6, cada uma das três APIs afetadas gera um PlatformNotSupportedException em tempo de execução.

Versão introduzida

.NET 6

Tipo de alteração interruptiva

Essa alteração pode afetar a compatibilidade binária.

Motivo da alteração

Anteriormente, um aplicativo que chamasse a API era compilado e executava, mas assim que a instância fosse usada em qualquer caminho de código, ela gerava uma exceção em tempo de execução. Para tornar mais explícito que esse cenário não tem suporte, a lógica de geração de exceções foi transferida para o construtor da instância. Caso nenhuma instância seja criada, a exceção também será gerada em pontos de entrada públicos que retornam esse tipo, ou seja, AssemblyName.KeyPair.

Não há suporte para assinatura de nome forte no .NET/.NET Core e não há solução alternativa.

Observação

O .NET Core/5+ nunca verifica assinaturas em seu runtime. No entanto, se você estiver direcionando bibliotecas multiplataforma (por exemplo, um pacote de autenticação básico direcionado ao .NET Standard 2.0, portanto, ele também é executado em .NET Framework), a nomenclatura forte é uma boa ideia para a compatibilidade entre runtimes. O .NET Framework continua a impor uma nomenclatura forte se o aplicativo de chamada estiver com nome forte. Você pode dar nome forte a assemblies em todas as versões do .NET usando a ferramenta Sn.exe. Para saber mais, confira Assinatura de nome forte.

APIs afetadas

Confira também