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 oferece ferramentas para assinatura a 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.emparelhara obter mais informações sobre como criar um chave emparelhar, consulte Como: Crie um emparelhar 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 sgKey.snk, localizado na pasta onde o assembly é compilado.Isso pressupõe que o assembly é compilado usando os compiladores de linha de comando vbc.exe e csc.exe.

<Assembly:AssemblyKeyFileAttribute("sgKey.snk")>
[assembly:AssemblyKeyFileAttribute(@"sgKey.snk")]
Observação:

Em ambientes de desenvolvimento, sistema autônomo 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, o caminho no exemplo de código seria "..\\..\\sgKey.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 público / emparelhar de chaves emparelharticular

Conceitos

Atraso na Assinatura de um Assembly

Referência

Assinatura de Página, o criador do projeto

Outros recursos

Criando e usando Assemblies de Nome Forte

Gerenciando Assinatura de Assembly e Manifesto