---
title: "ASSEMBLIES in .NET"  
description: "Assembly is a basic element ofpackaging in .NET. An assembly consists of IL code, metadata that describeswhat is in the assembly, and any other files"  
author: "Amit Singh"  
published: 2011-02-12  
updated: 2014-09-18  
canonical: https://www.mindstick.com/blog/114/assemblies-in-dot-net  
category: ".net"  
tags: [".net"]  
reading_time: 2 minutes  

---

# ASSEMBLIES in .NET

Assembly is a basic element ofpackaging in .NET. An assembly consists of IL code, metadata that describeswhat is in the assembly, and any other files or information that theapplication needs to run, such as graphics and sound files.

##### An assemblyperforms the following functions:

1-It contains code that the CLR executes. Assembly contains IL code plus the manifest in a portable executable (PE) file will be executed by CLR. Note that each assembly can have only one [entry point](https://www.mindstick.com/interview/675/what-is-the-entry-point-for-window-based-application) (i.e., DllMain, WinMain, or Main).

2- An assembly is a unit at which permissions are requested and granted. Hence it forms a [security](https://www.mindstick.com/articles/43813/new-security-technologies) boundary.

3- It forms a type boundary. Every assembly has an aunique name and the type’s within those assemblies includes the name of that assembly. Hence every type has a unique name or unique boundary. The assembly manifest contains assembly metadata that is used by CLR for resolving types and satisfying resource requests.

4- It forms a version boundary. The assembly is the smallest versionable unit in the CLR. All types and [resources](https://yourviews.mindstick.com/view/293/renovation-causes-wastage-of-resources) in the same assembly are versioned as a unit. The assembly’s manifest describes the version.

5- It forms a [deployment](https://www.mindstick.com/articles/325966/process-of-application-development-and-deployment) unit. When an [application](https://www.mindstick.com/articles/12824/calculator-application-in-android) starts, only the assemblies that the application initially calls must be present. Other assemblies, such as [localization](https://www.mindstick.com/articles/23272/why-software-localization-is-important-for-your-business) resources or assemblies containing utility classes can be retrieved whenever they are called. This allows [applications](https://www.mindstick.com/articles/12847/how-to-choose-the-right-ethernet-cable-for-industrial-applications) to be kept simple and thin at first.

\
Assemblies can be static or dynamic. Static assemblies can include.NETtypes ([interfaces](https://www.mindstick.com/articles/12100/interfaces-in-java-real-life-example) and classes), [as well as](https://www.mindstick.com/interview/2481/can-you-write-a-java-class-that-could-be-used-both-as-an-applet-as-well-as-an-application) required resources for the assembly(bitmaps, JPEG files, [resource files](https://www.mindstick.com/forum/23026/c-sharp-tool-generates-res-files-binary-resource-files), and so on). Static assemblies are a stored on disk in PE files. Dynamic assemblies are one which run directly from memory and are not saved to disk before execution. They can be saved disk after they have executed.

---

Original Source: https://www.mindstick.com/blog/114/assemblies-in-dot-net

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
