Assemblies de nome forte

Uma nomeação forte na assembly cria uma única identidade para assembly e pode evitar conflitos de assembly.

Como é criado um assembly de nomeação forte?

Um assembly de nome forte é gerado por meio da utilização de uma chave privada que corresponde a uma chave pública distribuída com o assembly e por ele mesmo. O assembly inclui o manifesto assembly que contém os nomes e os hashes de todos os arquivos que compõem o assembly. Assemblies que têm o mesmo nome forte devem ser idênticos.

Você pode usar nomes fortes nos assemblies usando o Visual Studio ou uma ferramenta de linha de comando. Para saber mais, confira Como assinar um assembly com um nome forte ou Sn.exe (Ferramenta de Nome Forte).

Quando um assembly de nome forte é criado, ele contém o nome de texto simples do assembly, o número de versão, informação cultural opcional, uma assinatura digital e uma chave pública que corresponde a uma chave privada utilizada para assinar.

Aviso

Por segurança, não confie em nomes fortes. Eles apenas fornecem uma identidade exclusiva.

Por que usar um nome forte em seus assemblies?

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

  • Você deseja habilitar seus assemblies a serem referenciados por assemblies de nome forte ou para dar acesso friend aos seus assemblies de outros assemblies de nome forte.

  • Um aplicativo precisa acessar versões diferentes do mesmo assembly. Isso significa que você precisa de versões diferentes de um assembly para carregar lado a lado no mesmo domínio de aplicativo sem conflitos. Por exemplo, se extensões diferentes de uma API existirem em assemblies que tenham o mesmo nome simples, nomeações fortes fornecem uma identidade única para cada versão de assembly.

  • Você não deseja afetar negativamente o desempenho de aplicativos usando o assembly, por isso assembly deve ser neutros quanto ao domínio. Isso exige uma nomeação forte porque um assembly com neutro com relação ao domínio deve ser instalado no cache de assembly global.

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

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

Se você é um desenvolvedor de código aberto e deseja os benefícios da identidade de um assembly de nome forte para melhor compatibilidade com o .NET Framework, considere inserir na chave privada um assembly no sistema de controle do código-fonte.

Confira também