Partilhar via


APIs de nome forte lançam PlatformNotSupportedException

Algumas APIs que não são suportadas em .NET/.NET Core mas que não faziam nada quando acedidas foram alteradas para agora lançar um PlatformNotSupportedException em tempo de execução. Anteriormente, usar estas APIs acabaria por resultar numa exceção em tempo de execução mais avançada; a exceção é agora lançada quando o tipo é instanciado ou acedido pela primeira vez.

Comportamento anterior

Em versões anteriores, ligar AssemblyName.KeyPair ou StrongNameKeyPair(Byte[]) era um no-op. Chamar StrongNameKeyPair(FileStream) leu o fluxo, mas de outra forma não fez nada.

Novo comportamento

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

Versão introduzida

.NET 6

Tipo de mudança disruptiva

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

Motivo da mudança

Anteriormente, uma aplicação que chamava a API compilava e corria, mas assim que a instância era usada em qualquer caminho de código, lançava 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 lançamento de exceção foi movida para o construtor de instância. Caso nenhuma instância seja criada, a exceção também é lançada em pontos de entrada públicos que retornam esse tipo, ou seja, AssemblyName.KeyPair.

A assinatura de nome forte não é suportada no .NET/.NET Core e não há solução alternativa.

Observação

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

APIs afetadas

Ver também