Chapter 18. Assemblies
An assembly is the basic unit of deployment in .NET Core and is also the container for all types. An assembly contains compiled types with their IL code, runtime resources, and information to assist with versioning and referencing other assemblies. An assembly also defines a boundary for type resolution. In .NET Core, an assembly comprises a single file with a .dll extension.
Note
When you build an executable application in .NET Core, you end up with two files: an assembly (.dll) and an executable launcher (.exe) appropriate to the platform you’re targeting.
This differs to what happens in .NET Framework, which generates a portable executable (PE) assembly. A PE has an .exe extension and acts both as an assembly and an application launcher. A PE can simultaneously target 32- and 64-bit versions of Windows.
.NET Core also lets you reference WinRT libraries, which have a .winmd extension. Structurally, they are similar to assemblies, but contain only metadata and no IL code.
Most of the types in this chapter come from the following namespaces:
System.Reflection System.Resources System.Globalization
What’s in an Assembly
An assembly contains four kinds of things:
- An assembly manifest
- Provides information to the CLR, such as the assembly’s name, version, and other assemblies that it references
- An application manifest
- Provides information to the operating system, such as how the assembly should be deployed and whether administrative elevation is required ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access