Сборка с несколькими управляемыми модулями - PullRequest
4 голосов
/ 14 сентября 2011

Я понимаю, что сборка состоит из 1 или более модулей и файлов ресурсов, если таковые имеются.

Если вы компилируете проект в C #, то компилятор просто превратит код в управляемый модуль, а затем бросит этот модуль в сборку.Теперь мой вопрос: когда в сборке будет более 1 управляемого модуля?

Ответы [ 2 ]

3 голосов
/ 14 сентября 2011

Вот хорошее объяснение этого Сетевой модуль против сборки .

Короче говоря, можно использовать несколько модулей по следующим причинам:

Многоязычные сборки.

Если сборка состоит из исходных файлов с разными языками программирования, необходимо скомпилировать файлы с одинаковыми языками программирования в сетевые модули, а затем связать их в сборки.

Отдельно поддерживаемые исходные файлы.

Если сборка поддерживается несколькими разработчиками, возможно, имеет смысл разделить исходные файлы на небольшие коллекции.Каждая коллекция принадлежит отдельному разработчику.Коллекции компилируются как сетевые модули, а затем связываются с окончательной сборкой.

Небольшая загрузка.

Если сборка размещается на сайте http, CLR загрузит толькоОсновной модуль в первый раз.Остальные модули будут загружены по требованию.Вы можете отделить менее часто используемый код от кода основной строки и скомпилировать менее часто используемый код в качестве сетевого модуля.Пользователь будет загружать сетевой модуль только тогда, когда это необходимо.

Свяжите одни и те же исходные файлы в несколько сборок.

Возможно, у вас есть общий код, который используется в нескольких сборках.Общий код достаточно мал, поэтому не стоит собирать их в отдельную сборку.Чтобы избежать компиляции одних и тех же исходных файлов несколько раз, вы можете скомпилировать их в сетевой модуль, а затем связать его с различными сборками.

0 голосов
/ 14 сентября 2011

Если у вас есть класс в пространстве имен Project, а другой класс в пространстве имен Project.Utilities, то будет два модуля:

  • Project
  • Project.Utilities

Кажется, именно так организована сборка .Net, classes -> modules -> assembly.

Компилятор, кажется, называет модули по пространствам имен, в которых находятся классы.

Вы можете увидеть структуру модуля в существующих сборках, используя ildasm или .Net Reflector

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...