The process for referencing types or resources in a strong-named assembly is usually transparent. You can make the reference either at compile time (early binding) or at run time.
A compile-time reference occurs when you indicate to the compiler that your assembly explicitly references another assembly. When you use compile-time referencing, the compiler automatically gets the public key of the targeted strong-named assembly and places it in the assembly reference of the assembly being compiled.
A strong-named assembly can only use types from other strong-named assemblies. Otherwise, the security of the strong-named assembly would be compromised.
To make a compile-time reference to a strong-named assembly
At the command prompt, type the following command:
<compiler command> /reference:<assembly name>
In this command, compiler command is the compiler command for the language you are using, and assembly name is the name of the strong-named assembly being referenced. You can also use other compiler options, such as the /t:library option for creating a library assembly.
The following example creates an assembly called
myAssembly.dll that references a strong-named assembly called
myLibAssembly.dll from a code module called
csc /t:library myAssembly.cs /reference:myLibAssembly.dll
To make a run-time reference to a strong-named assembly
When you make a run-time reference to a strong-named assembly (for example, by using the Assembly.Load or Assembly.GetType method), you must use the display name of the referenced strong-named assembly. The syntax of a display name is as follows:
<assembly name>, <version number>, <culture>, <public key token>
myDll, Version=188.8.131.52, Culture=en, PublicKeyToken=03689116d3a4ae33
In this example,
PublicKeyTokenis the hexadecimal form of the public key token. If there is no culture value, use
The following code example shows how to use this information with the Assembly.Load method.
Assembly^ myDll = Assembly::Load("myDll, Version=184.108.40.206, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Assembly myDll = Assembly.Load("myDll, Version=220.127.116.11, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Dim myDll As Assembly = _ Assembly.Load("myDll, Version=18.104.22.168, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1")
You can print the hexadecimal format of the public key and public key token for a specific assembly by using the following Strong Name (Sn.exe) command:
sn -Tp < assembly >
If you have a public key file, you can use the following command instead (note the difference in case on the command-line option):
sn -tp < assembly >