Como: Usar assinatura apresentar um assembly dinâmico um nome forte completo
Pode conceder a um assembly dinâmico um nome forte usando assinatura parcial ou completa de assinatura.Para assinar parcial, a chave pública deve ser especificada no AssemblyName passado para o DefineDynamicAssembly método. O Common linguagem tempo de execução aloca o espaço dentro do arquivo executável portátil (PE) para um blob de assinatura de nome forte, mas na verdade, não assina o assembly.O assembly resultante pode ser assinado totalmente em uma etapa pós-processamento usando ferramentas fornecidas no Windows Software Development Kit (SDK).
emparelhara o total de assinatura emparelharticular/pública chave emparelhar deve ser fornecido.Geralmente, essas entidades são armazenadas em um arquivo ou disco ou em um contêiner de chave de propriedade por um crypto API do provedor de serviços de criptografia (CSP).Chaves de segurança baixo freqüentemente são geradas pelo CSPs em software e exportadas para um arquivo para que eles podem ser verificados em sistemas de gerenciamento de código fonte durante o desenvolvimento do projeto.Chaves de alta segurança com freqüência são geradas por hardware que geralmente ajuda a impedir a exportar das chaves por razões de segurança.Esses pares de chave só podem ser acessados indiretamente por meio de um contêiner de chave.O emparelhar de chaves nome forte é especificado usando o System.Reflection.StrongNameKeyPair classe.
O exemplo a seguir demonstra o uso do assinatura completa para dar um assembly dinâmico um nome forte.
Exemplo
Dim fs As New FileStream("SomeKeyPair.snk", FileMode.Open)
Dim kp As New StrongNameKeyPair(fs)
fs.Close()
Dim an As New AssemblyName()
an.KeyPair = kp
Dim myAppDomain As AppDomain = Thread.GetDomain()
Dim ab As AssemblyBuilder = myAppDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.RunAndSave)
FileStream fs = new FileStream("SomeKeyPair.snk", FileMode.Open);
StrongNameKeyPair kp = new StrongNameKeyPair(fs);
fs.Close();
AssemblyName an = new AssemblyName();
an.KeyPair = kp;
AppDomain appDomain = Thread.GetDomain();
AssemblyBuilder ab = appDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.RunAndSave);