Saturday, June 30, 2007

What is assembly in .NET?

You must have heard the word assembly many times in .NET documentation. In this article I will share some thing about .NET assemblies.


What is an assembly?

  • An Assembly is a logical unit of code

  • Assembly physically exist as DLLs or EXEs

  • One assembly can contain one or more files

  • The constituent files can include any file types like image files, text files etc. along with DLLs or EXEs

  • When you compile your source code by default the exe/dll generated is actually an assembly

  • Unless your code is bundled as assembly it can not be used in any other application

  • When you talk about version of a component you are actually talking about version of the assembly to which the component belongs.

  • Every assembly file contains information about itself. This information is called as Assembly Manifest.




What is assembly manifest?

  • Assembly manifest is a data structure which stores information about an assembly

  • This information is stored within the assembly file(DLL/EXE) itself

  • The information includes version information, list of constituent files etc.




What is private and shared assembly?


The assembly which is used only by a single application is called as private assembly. Suppose you created a DLL which encapsulates your business logic. This DLL will be used by your client application only and not by any other application. In order to run the application properly your DLL must reside in the same folder in which the client application is installed. Thus the assembly is private to your application.
Suppose that you are creating a general purpose DLL which provides functionality which will be used by variety of applications. Now, instead of each client application having its own copy of DLL you can place the DLL in 'global assembly cache'. Such assemblies are called as shared assemblies.



What is Global Assembly Cache?


Global assembly cache is nothing but a special disk folder where all the shared assemblies will be kept. It is located under :\WinNT\Assembly folder.

No comments: