Understanding Assemblies in .NET
An assembly in .Net can be thought of an executable that you used to create with other framework and languages. But it is more than an executable. It has a manifest which describes the assembly with details like version, author, security, and other information that forms a part of it.
An assembly created for one application will not interfere with another application. Assemblies can be shared among other applications. If you want to use an assembly with another application all you have to do is to copy that assembly and place it in the bin directory of the application that wants to use it.
To share an assembly with any other application you have to place the assembly in the Global Assembly Cache (GAC). This is found in the folder named Assembly in the WinNT folder of your system. To copy an assembly to this GAC you have to give a strong name (unique name) to the assembly before doing so. For this a tool called SN.exe is used.
Then you can use the GACUTIL tool to copy the assembly to the GAC. When you are executing an assembly you are actually invoking the Common Language Runtime which converts the assembly to the native code for execution by using the Just-In-Time compiler.