Como referenciar um assembly de nome forte
O processo para referenciar tipos ou recursos em um assembly de nome forte é normalmente transparente. Você pode fazer a referência no tempo de compilação (vinculação inicial) ou no tempo de execução.
Uma referência de tempo de compilação ocorre quando você indica ao compilador que o assembly a ser compilado faz referência explícita a outro assembly. Quando você usa a referência no tempo de compilação, o compilador obtém automaticamente a chave pública do assembly com nome forte direcionado e o coloca na referência de assembly do assembly que está sendo compilado.
Observação
Assembly de nome forte só pode usar tipos de outros assemblies de nome forte. Caso contrário, a segurança do assembly de nome forte estaria comprometida.
Fazer uma referência no tempo de compilação a um assembly de nome forte
Em um prompt de comando, digite o comando a seguir:
<comando do compilador>/reference:<nome do assembly>
Nesse comando, o comando do compilador é o comando do compilador para a linguagem que você está usando, e nome do assembly é o nome do assembly de nome forte que está sendo referenciado. Você também pode usar outras opções de compilador, como a opção /t:library para criar um assembly de biblioteca.
O exemplo a seguir cria um assembly chamado myAssembly.dll que faz referência a um assembly de nome forte chamado myLibAssembly.dll de um módulo de código chamado myAssembly.cs.
csc /t:library myAssembly.cs /reference:myLibAssembly.dll
Fazer uma referência no tempo de execução a um assembly de nome forte
Quando você faz uma referência de tempo de execução a um assembly de nome forte, por exemplo, usando o método Assembly.Load ou o Assembly.GetType, você deve usar o nome de exibição do assembly de nome forte referenciado. A sintaxe de um nome de exibição é a seguinte:
<nome do assembly>,<número de versão>,<cultura>,<token de chave pública>
Por exemplo:
myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33
Neste exemplo, PublicKeyToken
é a forma hexadecimal do token de chave pública. Se não houver valor de cultura, use Culture=neutral
.
O exemplo de código a seguir mostra como usar essas informações com o método Assembly.Load.
Assembly^ myDll =
Assembly::Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Assembly myDll =
Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Dim myDll As Assembly = _
Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1")
Você pode imprimir o formato hexadecimal da chave pública e do token de chave pública para um assembly específico usando o seguinte comando Nome Forte (Sn.exe):
sn -Tp < assembly >
Se você tiver um arquivo de chave pública, use o comando a seguir (observe a diferença no caso da opção de linha de comando):
sn -tp < arquivo de chave pública >