Assembléias com nomes fortes

A nomeação forte de um assembly cria uma identidade exclusiva para o assembly e pode evitar conflitos de assembly.

O que faz uma assembleia de nome forte?

Um assembly nomeado forte é gerado usando a chave privada que corresponde à chave pública distribuída com o assembly e o próprio assembly. O assembly inclui o manifesto do assembly, que contém os nomes e hashes de todos os arquivos que compõem o assembly. Os assemblies que têm o mesmo nome forte devem ser idênticos.

Você pode fazer assemblies de nome forte usando o Visual Studio ou uma ferramenta de linha de comando. Para obter mais informações, consulte Como assinar um assembly com um nome forte ou Sn.exe (ferramenta Nome forte).

Quando um assembly de nome forte é criado, ele contém o nome de texto simples do assembly, o número da versão, informações de cultura opcionais, uma assinatura digital e a chave pública que corresponde à chave privada usada para assinatura.

Aviso

Não confie em nomes fortes para a segurança. Eles fornecem apenas uma identidade única.

Porquê dar um nome forte às suas assembleias?

Para o .NET Framework, assemblies de nome forte são úteis nos seguintes cenários:

  • Você deseja permitir que seus assemblies sejam referenciados por assemblies de nome forte ou deseja dar friend acesso aos assemblies de outros assemblies de nome forte.

  • Um aplicativo precisa ter acesso a diferentes versões do mesmo assembly. Isso significa que você precisa de diferentes versões de um assembly para carregar lado a lado no mesmo domínio do aplicativo sem conflito. Por exemplo, se existirem diferentes extensões de uma API em assemblies que tenham o mesmo nome simples, a nomenclatura forte fornecerá uma identidade exclusiva para cada versão do assembly.

  • Você não deseja afetar negativamente o desempenho de aplicativos que usam seu assembly, portanto, deseja que o assembly seja neutro em termos de domínio. Isso requer nomenclatura forte porque um assembly neutro de domínio deve ser instalado no cache de assembly global.

  • Você deseja centralizar o serviço para seu aplicativo aplicando a política de editor, o que significa que o assembly deve ser instalado no cache de assembly global.

Para o .NET Core e o .NET 5+, assemblies de nome forte não fornecem benefícios materiais. O tempo de execução nunca valida a assinatura de nome forte, nem usa o nome forte para vinculação de assembly.

Se você for um desenvolvedor de código aberto e quiser os benefícios de identidade de um assembly de nome forte para melhor compatibilidade com o .NET Framework, considere verificar a chave privada associada a um assembly ao seu sistema de controle do código-fonte.

Consulte também