Как дополнение к другим ответам:
В MSDN говорится: «Модуль - это файл промежуточного языка Microsoft (MSIL), у которого нет манифеста сборки».
Модули можно «связать» вместе, создав манифест сборки с помощью утилиты Assembly Linker (al.exe). Если я правильно помню, CLR может загружать отдельные модули для сборки, так что загружаются только необходимые модули.
РЕДАКТИРОВАТЬ: нашел лучшее описание сетевых модулей и почему вы хотели бы их.
Есть еще один вопрос здесь, на SO, который касается темы контрольной суммы. В ответах упоминается использование метода GetILAsByteArray для получения IL.