Search code examples
c#.netclr.net-assembly

Why and Where do we need Managed Modules


I know that Managed Modules are logical code containers containing PE32 Header, CLR Header, Metadata and IL code. And assemblies can contain multiple managed modules linked using Assembly Linker (AI.exe). But VS doesn't support multiple managed module assemblies. I am wondering when and why an where we do need Managed Modules if we cannot use them without assemblies etc. Couldn't we just use assemblies?

I am sure there is a logical explanation but I am not sure I know what it is :-)

More information about what Managed Module is: What is a Managed Module (compared to an Assembly)?


Solution

  • The diagram posted at the other question seems clear enough:

    enter image description here

    Basically, you would use a Managed Module when you want to organize your code as containers within an assembly. In theory, this should give you better flexibility.

    In practice, this hardly ever happens, as most folks organize their solutions as a collection of Projects, each having its own associated DLL. This arrangement allows you to physically swap out the DLL without having to replace the entire (multiple module) assembly.