2009-09-01 1 views
46

Не могли бы вы объяснить, что такое сборка на C# или .NET?Что такое сборка на C# или .NET?

  1. Где это начинается и где оно заканчивается?
  2. Какую важную информацию я должен знать о сборках?
+2

Строго говоря, это не сборка концепции .NET, а не концепция C#? – JeffH

+2

@JeffH: Когда я задал вопрос, я подумал, что это концепция C#. Теперь я понимаю, что это .NET. Тем не менее, поскольку я думаю, что другие люди могут быть смущены, как и я, я намеренно не изменил его для Google, чтобы разместить эту ошибку ... –

+0

«exe» или 'dll' –

ответ

65

Сборка - это скомпилированный вывод вашего кода, обычно это DLL, но ваш EXE также является сборкой. Это самая маленькая единица развертывания для любого проекта .NET.

В сборке обычно содержится код .NET в MSIL (Microsoft Intermediate), который будет скомпилирован в собственный код («JITted» - скомпилирован компилятором Just-In-Time) при первом запуске на данной машине , Этот скомпилированный код также будет храниться в сборке и повторно использоваться при последующих вызовах.

Сборка также может содержать ресурсы, такие как значки, растровые изображения, строковые таблицы и т. Д. Кроме того, сборка также содержит метаданные в манифесте сборки - информацию, такую ​​как номер версии, сильное имя, культура, ссылочные сборки и т. Д.

В 99% случаев одна сборка равна физическому файлу на диске - случай сборки с несколькими файлами (одна сборка, распределенная по более чем одному файлу) выглядит довольно случайным краем которого я никогда не встречал до сих пор в моей пятилетней разработке .NET.

В мультифильной сборке все еще будет только один манифест сборки в DLL или EXE и код MSIL в нескольких файлах сетевого модуля.

+1

@marc_s: Я думаю, вы имеете в виду мульти- файл сборки. Можно упаковать несколько сборок в одном файле с помощью инструментов командной строки студии, но не напрямую через IDE. –

+4

Очень важным в сборке является метаданные манифеста сборки. В манифесте есть информация, такая как версия, сильное имя, культура, ссылочные сборки и т. Д. В многосетевой сборке все равно будет только один манифест сборки в dll или exe и код MSIL в нескольких файлах .netmodule. В основном сборка является минимальной единицей развертывания в> net – softveda

+0

@marc_s: Я был бы признателен, если бы вы добавили точку @ Pratik в ответ, спасибо –

8

.NET assembly

В рамках Microsoft .NET, сборка представляет собой частично скомпилированный код библиотека для использования в развертывании, версий и безопасности.

4

http://www.codeguru.com/columns/csharp_learning/article.php/c5845

Узел представляет собой файл, который автоматически генерируется компилятором при успешной компиляции каждого приложения .NET. Это может быть либо динамическая библиотека ссылок, либо исполняемый файл. Он генерируется только один раз для приложения, и после каждой последующей компиляции сборка обновляется.

+1

Ассембли отличаются от файлов, которые их содержат. –

+1

@ Raghav - Обновите свою фотографию чем-то случайным ради небес! Знаешь, мы не ставим здесь паспорта. –

2

Here's другое объяснение грима сборок .NET, мини-цитата:

Каркас .NET состоит из концепций модулей, узлов, которые как хранилище метаданных и манифеста информации , Сборка может содержать несколько модулей. Visual C# только когда-либо создает один модуль, который включается в сборку на C# компилятором (csc.exe), но сборка может связать много .NET модулей вместе с помощью сборки команды линкера (al.exe) линий инструмент. Например, каждый из ваших исходных файлов .cs может быть скомпилирован в модуль и связан вместе с формой сборка - сборка представляет собой всего лишь набор модулей и ресурсов . Один из этих модулей, однако, должен содержать , содержащий метаданные манифеста (см. Ниже) информация для сборки должна быть , понятная для CLR.
....
Создав новый файл .exe или .dll внутри VS.NET, вы увидите, что ваш файл отображается внутри вашей папки bin. Открыв его в блокноте будет выдавать бред, или даже внутри шестнадцатеричного редактора без знания структуры файла , вам нужен инструмент, как Ildasm.exe или ФФСА исследователь, чтобы сделать смысл из его. Структура сборки выглядит следующим образом:

заголовок ПЭ
заголовок CLR
CLR метаданные
CLR
IL код
Native данные

0

Когда исходный код составляются языковой компилятор Создает Управляемая сборка и MSIL (промежуточный язык MisroSoft). Эта сборка содержит .dll или .exe файл. Assebmly может быть двух типов Частное собрание и Shared Ассамблея, общая Ассамблея хранится в GAC (глобальный кэш сборок) так, что любое приложение может обращаться к нему в то время как частные сборки хранятся в папке приложения, которые могут быть использованы только одним Приложением.

0

Сборка - это DLL или EXE, которые будут созданы при публикации или компиляции приложения.

 Смежные вопросы

  • Нет связанных вопросов^_^