This is a good and concise tutorial about how to create and deploy com-visible .net assamblies:
http://jumbloid.blogspot.fr/2009/12/making-net-dll-com-visible.html[
^]. But that is needed only if your component in the assambly is interoperating with non-dotnet host, that identifies the component from registry and it is not searching for it and loading it on it's own.
.NET has it's own view about how to come out from the dll hell.
GAC[
^] is only one approach of it. In general you don't need to register an assambly in the GAC to use it; GAC holds the often used and framework wide assamblies (with version) but it has some other features related to origin based security.
You have several other tools to deal with the mess of assamblies you might need to handle:
- the resolution mechanism:
http://msdn.microsoft.com/en-us/library/yx7xezcf(v=vs.100).aspx[
^], that implies location but also
strong names[
^].
- you can use reflection to dynamically load assambly at runtime:
http://msdn.microsoft.com/en-us/library/25y1ya39.aspx[
^]
- there are several plug-in frameworks for .net like MEF and MAF, but many third party ones too
- but of course, you can still use COM interop