What course are these questions from? ;-)
An assembly is a logical component that is made up of one or more physical files (modules). The vast majority of assemblies have only one module however the C# compiler can assembly multimodule assemblies using the /addmodule compiler flag and the assembly linker (AL.EXE) can also be used to create multimodule assemblies. The are not very interesting in general. There are a couple of uses of them the most important IMO is being able to create an assembly from modules created in different languages (such as having an interop module built in managed C++.
Dll Hell is the term used to refer to the fact that normal Dlls are version unaware. application developers had a habit of deploying their dlls into the System32 directory (where they would always be locatable by the loader). However, it was not uncommon for people to accidently overwrite a newer version of the dll which would break other peoples applications which relied on the newer version. .NET mitigates against this because assemblies are version aware and multiple versions can be installed side by side in the GAC so that each application will pull up the version it needs.
Regards
Richard Blewett - DevelopMentor
http://www.dotnetconsult.co.uk/weblog
http://www.dotnetconsult.co.uk
What is the difference between managed module and assembly? Are they one and
the same?
What is dll hell problem? How does .net solve it?