Shared Assemblies
You can create assemblies that can be shared by other applications. You might want to do this if you have written a generic control or a class that might be used by other developers. If you want to share your assembly, it must meet certain stringent requirements.
First, your assembly must have a
strong
name
. Strong names are globally unique.
Tip
No one else can generate the same strong name as you because an assembly generated with one private key is guaranteed to have a different name than any assembly generated with another private key.
Second, your shared assembly must be protected against newer versions trampling over it, and so it must have version control.
Finally, to share your assembly, you will place it in the
Global Assembly Cache (GAC)
(pronounced GACK).
This is an area of the file system set aside by the
Common Language Runtime (CLR) to hold
shared assemblies.
The End of DLL Hell
Assemblies mark the end of DLL Hell. You will remember this scenario: you install Application A on your machine, and it loads a number of DLLs into your Windows directory. It works great for months. You then install Application B on your machine, and suddenly, unexpectedly, Application A breaks. Application B is in no way related to Application A. So what happened? It turns out, you later learn, that Application B replaced a DLL that Application A needed, and suddenly Application A begins to stagger about, blind and senseless.
When DLLs were invented, disk space was at a premium ...
Get Programming C# now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.