Understanding Assemblies in VB.NET

Assemblies can be thought of exe files with some additional information about themselves. The information about themselves in provided in the manifest of the assembly. This helps you to get information about an assembly even programmatically and then load a particular assembly dynamically based on the information you get about an assembly.

Namespaces and classes for this purpose are available in .Net. The System.Reflection namespace has a class called Assembly which can be used to get information about an assembly programmatically.

If you want to use a particular assembly in another program, you can do so by simply copying that assembly to the bin folder of that application. In case you need to share an application with other programs you can do so by copying the assembly to the Global Assembly Cache (GAC).

In the GAC, there might be other assemblies which might have a similar name to that you have created now. Hence there is a need to have a globally unique name which is otherwise called a strong name.

So you have to give a strong name to an assembly before you copy that to the GAC. Strong names can be given to an assembly using the tool SN.exe. After giving the strong name you can use the Gacutil.exe to copy the assembly to the GAC.