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