Como: Criar um par de chaves público-privado
Para assinar um assembly com um nome forte, você deve ter um par de chaves pública/privada. Esse par de chaves criptográficas públicas e privadas é usado durante a compilação para criar um assembly de nome forte. Você pode criar um par de chaves usando a ferramenta Nome forte (Sn.exe). Os arquivos de par de chaves geralmente têm uma extensão .snk .
Nota
No Visual Studio, as páginas de propriedades do projeto C# e Visual Basic incluem uma guia Assinatura que permite selecionar arquivos de chave existentes ou gerar novos arquivos de chave sem usar Sn.exe. No Visual C++, você pode especificar o local de um arquivo de chave existente na página de propriedades Avançado na seção Vinculador da seção Propriedades de configuração da janela Páginas de propriedades . O uso do atributo para identificar pares de arquivos de chave tornou-se obsoleto a partir do AssemblyKeyFileAttribute Visual Studio 2005.
Criar um par de chaves
Para criar um par de chaves, em um prompt de comando, digite o seguinte comando:
sn –k<nome do arquivo>
Neste comando, nome do arquivo é o nome do arquivo de saída que contém o par de chaves.
O exemplo a seguir cria um par de chaves chamado sgKey.snk.
sn -k sgKey.snk
Se você pretende atrasar a assinatura de um assembly e controlar todo o par de chaves (o que é improvável fora dos cenários de teste), você pode usar os seguintes comandos para gerar um par de chaves e, em seguida, extrair a chave pública dele em um arquivo separado. Primeiro, crie o par de chaves:
sn -k keypair.snk
Em seguida, extraia a chave pública do par de chaves e copie-a para um arquivo separado:
sn -p keypair.snk public.snk
Depois de criar o par de chaves, você deve colocar o arquivo onde as ferramentas de assinatura de nome forte podem encontrá-lo.
Ao assinar um assembly com um nome forte, o Assembly Linker (Al.exe) procura o arquivo de chave relativo ao diretório atual e ao diretório de saída. Ao usar compiladores de linha de comando, você pode simplesmente copiar a chave para o diretório atual que contém seus módulos de código.
Se você estiver usando uma versão anterior do Visual Studio que não tem uma guia Assinatura nas propriedades do projeto, o local do arquivo de chave recomendado é o diretório do projeto com o atributo de arquivo especificado da seguinte maneira:
[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>