Como: Assinar um Assembly com um nome forte
O Windows Software Development Kit (SDK) fornece várias maneiras de assinar um assembly com um nome forte:
Usando o Vinculador de Assembly (Al.exe) fornecido pelo Windows SDK.
Usando atributos de assembly para inserir as informações do nome forte no seu código. Você pode usar o AssemblyKeyFileAttribute ou o AssemblyKeyNameAttribute, dependendo de onde está localizado o arquivo de chave a ser usado.
Observação
Na .NET Framework versão 2.0, alguns compiladores emitem mensagens de aviso quando atributos são usados.
Utilizando opções de compilação tais como /keyfile ou /delaysign em C# e Visual Basic, ou a opção de vinculador /KEYFILE ou /DELAYSIGN, em C++. (Para obter informações sobre atraso de assinatura, consulte Atraso na Assinatura de um Assembly.)
Observação
Em Visual Studio 2005, o ambiente de desenvolvimento fornece ferramentas para assinar assemblies.Consulte Gerenciando Assinatura de Assembly e Manifesto e Assinatura de Página, o criador do projeto.
Você deve ter um par de chaves de criptografia para assinar um assembly com um nome forte. Para obter mais informações sobre como criar um par de chaves, consulte como: Criar um par de chaves pública/particular.
Para criar e assinar um assembly com um nome forte usando o Vinculador de Assembly.
No prompt de comando, digite o seguinte comando:
al /out: < nome do assembly > <nome do módulo> /keyfile: < nome de arquivo >
Neste comando, nome do assembly é o nome assembly que se deseja assinar com um nome forte, nome do módulo é o nome do módulo de código usado para criar o assembly, e nome de arquivo é o nome do recipiente ou arquivo que contém o par de chaves.
O exemplo a seguir assina o assembly MyAssembly.dll com um nome forte usando o arquivo de chave sgKey.snk.
al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk
Para assinar um assembly com um nome forte usando atributos
- Em um módulo de código, adicione o AssemblyKeyFileAttribute ou o AssemblyKeyNameAttribute, especificando o nome do arquivo ou recipiente que contém o par de chaves para usar ao assinar o assembly com um nome forte.
O exemplo de código a seguir usa o AssemblyKeyFileAttribute com um arquivo de chave chamado keyfile.snk, localizado na pasta onde o assembly é compilado.
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
Observação
Em ambientes de desenvolvimento, como Visual Studio, o assembly não pode ser compilado no diretório do projeto.Por exemplo, algumas versões do Visual Studio compilam projetos C# em um subdiretório bin\Debug.Nesse caso, seria o caminho no exemplo de código "...\\..\\keyfile.snk".Em Visual Studio 2005 o arquivo de chave para C# pode ser especificado nas configurações do projeto.
Você também pode atrasar a assinatura de um assembly quando estiver compilando. Para obter mais informações, consulte Delay Signing an Assembly.
Ao assinar um assembly com um nome forte o Vinculador de Assembly (Al.exe) procura pelo 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 a pasta atual, que contém seus módulos de código.
Consulte também
Tarefas
Como: Criar um par de chaves pública/particular
Referência
Assinatura de Página, o criador do projeto
Conceitos
Criando e usando Assemblies de Nome Forte
Atraso na Assinatura de um Assembly