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>

Confira também