Assinatura de Nome Forte para Aplicativos Gerenciados
A assinatura com nomes fortes fornece ao componente de software uma identidade exclusiva que não pode ser falsificada por outra pessoa.Os nomes fortes são usados para garantir que dependências entre componente e instruções de configuração correspondem exatamente ao componente e versão de componente corretos.
Um nome forte consiste da identidade do assembly (nome de texto simples, número de versão, e informações culturais), mais um símbolo de chave pública e uma assinatura digital.
Para projetos Visual C# e Visual Basic, o Visual Studio permite de alta nomeação-segura através do painel Signing na caixa Projeto Designer ; Consulte Assinatura de Página, o criador do projeto.
Para projetos Visual C++, use Opções do Vinculador para assinar o conjunto de módulos (assembly); consulte Assemblies com Nome Forte (Assinatura de Assembly).
Razões para usar Nomes Fortes
Nomes fortes dão a um aplicativo ou componente uma identidade exclusiva que outro software pode usar para referir-se explicitamente a ele.Por exemplo, nomes fortes permitem a autores e administradores de aplicativos especificar uma versão de serviço precisa para ser usada num componente compartilhado.Isso permite que diferentes aplicativos especifiquem diferentes versões sem afetar outros aplicativos.Além disso, você pode usar o nome forte de um componente como evidência de segurança para estabelecer um relacionamento de confiança entre dois componentes.
O Que Pode Ter Nomes Fortes
Você pode assinar assemblies do Framework .NET e manifestos XML com nomes fortes.Eles incluem o seguinte:
Assemblies de Aplicativo (.exe)
Manifestos de Aplicativo (.exe.manifest)
Manifestos de Implantação (.application)
Assemblies com Componentes Compartilhados (.dll)
O Que Deve Ter Nomes Fortes
DLLs compartilhados devem ter nomes fortes.Independentemente de se uma DLL é ou não implantada na Cache Global de Assemblies, é recomendável usar um nome forte quando a DLL é não um detalhe de implementação particular ao aplicativo, mas sim um serviço geral que pode ser usado por mais de um aplicativo.
O Que Tem Que Ter Nomes Fortes
Você deve assinar com nomes fortes os seguintes artefatos:
DLLs, se você deseja distribuí-los na Cache Global de Assemblies (GAC).
ClickOnceManifestos de Implantação (.application)O sistema do projeto ClickOnce permite isso por padrão para aplicativos implantados da maneira ClickOnce.
Assemblies de interoperabilidade primária, que são usados para interoperabilidade COM.O utilitário TLBIMP impõe nomes fortes ao criar uma assembly de interoperabilidade primária a partir um biblioteca de tipos COM.
O Que Não Deve Ter Nomes Fortes
Em geral, você deve evitar dar nomes fortes a montagens de aplicativo EXE.Um aplicativo altamente nomeado ou componente não é possível fazer referência um componente Weak-nomeada.0Portanto, nomear fortemente um executável impede o EXE de referir-se a DLLs fracamente nomeados que são implantados com o aplicativo.
Por esse motivo, o sistema do projeto do Visual Studio não assina aplicativos EXE com nomes fortes.Em vez disso, ele assina com nome forte o manifesto do aplicativo, que aponta internamente para o aplicativo EXE de nome fraco.
Além disso, talvez você queira evitar assinar com nomes fortes componentes que são exclusivos do seu aplicativo.Nesse caso, os nomes fortes podem dificultar a gerência de dependências e adicionar um fardo desnecessário aos componentes exclusivos.
Como Atribuir um Nome Forte
No Visual Studio, você pode assinar um aplicativo ou componente com um nome forte usando o painel Signing do Project Designer.The Assinatura painel oferece suporte a dois métodos de nomeação de alta segurança: usando um arquivo de chave de nome forte ou usando um provedor de chaves.Para obter informações sobre assinatura de manifestos, consulte Como: Manifestos de aplicativo de sinal e implantação; Para obter informações sobre como criar arquivos de chave fortemente nomeados (.snk), consulte Como: Criar um par de chaves Público/particular.
Ao usar o método do arquivo de chave, você pode usar um arquivo de chave existente ou criar um novo arquivo.Você sempre deve proteger o arquivo de chave com uma senha para impedir que alguém o use.
Provedores de chave ou armazéns de certificados fornecem outro meio de proteger suas chaves de nome forte.Alguns provedores de chave usam um cartão inteligente como um meio de verificar sua identidade e impedir sua chave de ser roubada.
Atualizando Componentes com Nomes Fortes
Um componente com nome forte não pode sofrer manutenção ou ser atualizado apenas copiando uma nova versão sobre a antiga.
Você pode atualizar uma DLL fracamente-nomeada em um diretório de aplicativo copiando apenas uma nova versão para o diretório do aplicativo.O Common Language Runtime (CLR) será carregado qualquer que seja a versão fisicamente presente.
Com DLLs assinadas com nomes fortes, você deve recompilar o aplicativo inteiro para que todas as referências da assembly apontem para a nova versão, ou você deve atualizar o arquivo .config do aplicativo para instruir o runtime para carregar a nova versão em vez daquela antiga.
Embora componentes com nomes fortes exijam um pouco mais de manutenção, a vantagem é que os aplicativos pode ser muito explícitos sobre quais versões de outros componentes são necessárias em tempo de execução.
Consulte também
Tarefas
Como: Manifestos de aplicativo de sinal e implantação
Como: Assinar um assembly (Visual Studio)
Como: atraso Assinar uma assembly (Visual Studio)
Conceitos
ClickOnce Implantação and Segurança
Assemblies com Nome Forte (Assinatura de Assembly)
Referência
Assinatura de Página, o criador do projeto