Что такое сборки .NET? Я просматривал по сети, и я не в состоянии понять определение.
Что такое сборки .NET? Я просматривал по сети, и я не в состоянии понять определение.
Ответы:
Проще говоря: кусок (предварительно скомпилированного) кода, который может быть выполнен средой выполнения .NET. Программа .NET состоит из одной или нескольких сборок.
.classфайл в Java-мире?
Сборка - это самая маленькая единица развертывания приложения .net. Это может быть dll или exe .
В основном это два типа:
Private Assembly: dll или exe, являющиеся собственностью только одного приложения. Обычно хранится в корневой папке приложения
Публичная / общая сборка: это dll, которая может использоваться несколькими приложениями одновременно. Совместно используемая сборка хранится в GAC, то есть Global Assembly Cache .
Звучит сложно? Naa ....
GAC - это просто папка C: \ Windows \ Assembly, где вы можете найти общие сборки / dll всех программ, установленных на вашем ПК.
Существует также третий и наименее известный тип сборки: спутниковая сборка .
Спутниковая сборка содержит только статические объекты, такие как изображения и другие неисполняемые файлы, необходимые для приложения.
Надеюсь, это поможет читателям!
сборки
Когда вы компилируете приложение, созданный код MSIL сохраняется в сборке. Сборки включают в себя как исполняемые файлы приложений, которые можно запускать непосредственно из Windows без необходимости использования каких-либо других программ (они имеют расширение .exe), так и библиотеки (которые имеют расширение .dll) для использования другими приложениями.
В дополнение к содержанию MSIL сборки также включают метаинформацию (то есть информацию об информации, содержащейся в сборке, также известную как метаданные) и дополнительные ресурсы (дополнительные данные, используемые MSIL, такие как звуковые файлы и изображения). Метаинформация позволяет сборкам быть полностью информативными. Вам не нужна никакая другая информация для использования сборки, то есть вы избегаете таких ситуаций, как невозможность добавления необходимых данных в системный реестр и т. Д., Что часто было проблемой при разработке с другими платформами.
Это означает, что развертывание приложений часто так же просто, как копирование файлов в каталог на удаленном компьютере. Поскольку в целевых системах не требуется никакой дополнительной информации, вы можете просто запустить исполняемый файл из этого каталога и (при условии, что установлена .NET CLR), вы готовы к работе.
Конечно, вам не обязательно включать все необходимое для запуска приложения в одном месте. Вы могли бы написать некоторый код, который выполняет задачи, требуемые несколькими приложениями. В подобных ситуациях часто бывает полезно разместить повторно используемый код в месте, доступном для всех приложений. В .NET Framework это глобальный кэш сборок (GAC). Поместить код в GAC просто - вы просто помещаете сборку, содержащую код, в каталог, содержащий этот кеш.
Сборка - это файл .dll на вашем жестком диске, где хранятся классы .NET Framework. Например, все классы, содержащиеся в ASP.NET Framework, находятся в сборке с именем System.Web.dll.
Точнее говоря, сборка является основной единицей развертывания, безопасности и контроля версий в .NET Framework. Поскольку сборка может охватывать несколько файлов, сборку часто называют «логической» dll.
Заметка
.NET Framework (версия 2.0) включает в себя 51 сборку.
Существует два типа сборок: частные и общие. Закрытая сборка может использоваться только одним приложением. Общая сборка, с другой стороны, может использоваться всеми приложениями, расположенными на одном сервере.
Общие сборки находятся в глобальном кэше сборок (GAC). Например, сборка System.Web.dll и все остальные сборки, включенные в .NET Framework, находятся в глобальном кэше сборок.
Заметка
Глобальный кэш сборок физически находится в папке \ WINDOWS \ Assembly на вашем компьютере. В папке \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 есть отдельная копия каждой сборки. Первый набор сборок используется во время выполнения, а второй набор используется во время компиляции.
Прежде чем вы сможете использовать класс, содержащийся в сборке, в вашем приложении, вы должны добавить ссылку на сборку. По умолчанию приложение ASP.NET ссылается на наиболее распространенные сборки, содержащиеся в глобальном кэше сборок:
mscorlib.dll
System.dll
System.Configuration.dll
System.Web.dll
System.Data.dll
System.Web.Services.dll
system.Xml.dll
System.Drawing.dll
System.EnterpriseServices.dll
System.Web.Mobile.dll
Чтобы использовать какой-либо конкретный класс в .NET Framework, вы должны сделать две вещи. Во-первых, ваше приложение должно ссылаться на сборку, которая содержит класс. Во-вторых, ваше приложение должно импортировать пространство имен, связанное с классом.
В большинстве случаев вам не нужно беспокоиться о ссылках на необходимую сборку, поскольку на наиболее распространенные сборки ссылаются автоматически. Однако, если вам нужно использовать специализированную сборку, вам нужно явно добавить ссылку на сборку. Например, если вам нужно взаимодействовать с Active Directory с помощью классов в пространстве имен System.DirectoryServices, вам потребуется добавить ссылку на сборку System.DirectoryServices.dll в ваше приложение.
Каждая запись класса в документации .NET Framework SDK содержит список сборки и пространства имен, связанных с классом. Например, если вы посмотрите на класс MessageQueue в документации, вы обнаружите, что этот класс находится в пространстве имен System.Messaging, расположенном в сборке System.Messaging.dll.
Если вы используете Visual Web Developer, вы можете явно добавить ссылку на сборку, выбрав пункт меню «Веб-сайт», «Добавить ссылку» и выбрав имя сборки, на которую нужно сослаться. Например, добавление ссылки на сборку System.Messaging.dll приводит к добавлению файла веб-конфигурации в листинге 1.4 в ваше приложение.
Например. Web.Config
enter code here
Если вы предпочитаете не использовать Visual Web Developer, то вы можете добавить ссылку на сборку System.Messaging.dll, создав файл в приведенном выше примере вручную.
Википедия должна сказать:
В платформе Microsoft .NET сборка представляет собой частично скомпилированную библиотеку кода для использования при развертывании, управлении версиями и безопасности. Существует два типа: сборки процессов (EXE) и сборки библиотек (DLL). Сборка процесса представляет собой процесс, который будет использовать классы, определенные в сборках библиотеки. Сборки .NET содержат код в CIL, который обычно генерируется из языка CLI, а затем компилируется в машинный язык во время выполнения компилятором CLR «точно в срок». Сборка может состоять из одного или нескольких файлов. Файлы кода называются модулями. Сборка может содержать более одного модуля кода, и, поскольку для создания модулей кода можно использовать разные языки, технически возможно использовать несколько разных языков для создания сборки.
Если бы вы действительно просмотрели, это помогло бы, если бы вы разъяснили, что вы не понимаете
Смотрите это :
В платформе Microsoft .NET сборка представляет собой частично скомпилированную библиотеку кода для использования при развертывании, управлении версиями и безопасности.
физическая коллекция класса, интерфейса, перечисления и т. д., которая находится в коде IL. Это может быть .EXE или .DLL файл .EXE - это исполняемый файл, и .DLL может динамически использоваться на любом поддерживаемом языке .net.
Сборка - это модуль времени выполнения, состоящий из типов и других ресурсов. Все типы в сборке имеют одинаковый номер версии.
Часто одна сборка имеет только одно пространство имен и используется одной программой. Но это может охватывать несколько пространств имен. Кроме того, одно пространство имен может распространяться на несколько сборок. В больших проектах сборка может состоять из нескольких файлов, которые содержатся в манифесте (то есть в оглавлении).
В C # сборка - это наименьшее развертывание приложения .Net. Это может быть dll или exe. Имеется два типа: 1. Частная сборка 2. Публичная / общая сборка
В дополнение к принятому ответу хочу привести пример!
Например, мы все используем
System.Console.WriteLine()
Но где же код для System.Console.WriteLine !?
какой код на самом деле помещает текст на консоль?
Если вы посмотрите на первую страницу документации для класса Console , то в верхней части вы увидите следующее: Assembly: mscorlib (в mscorlib.dll). Это означает, что код класса Console находится в сборке. по имени mscorlib. Сборка может состоять из нескольких файлов, но в данном случае это только один файл, который представляет собой библиотеку динамических ссылок mscorlib.dll.
Файл mscorlib.dll очень важен в .NET, он является основной библиотекой DLL для библиотек классов в .NET и содержит все основные классы и структуры .NET.
если вы знаете C или C ++, обычно вам нужна директива #include вверху, которая ссылается на файл заголовка. Включаемый файл предоставляет прототипы функций компилятору. напротив, компилятору C # не нужны заголовочные файлы. Во время компиляции компилятор C # напрямую обращается к файлу mscorlib.dll и получает из метаданных этого файла информацию о всех классах и других типах, определенных в нем.
Компилятор C # может установить, что mscorlib.dll действительно содержит класс с именем Console в пространстве имен с именем System с помощью метода с именем WriteLine, который принимает один аргумент типа string.
Компилятор C # может определить, что вызов WriteLine действителен, и компилятор устанавливает ссылку на сборку mscorlib в исполняемом файле.
по умолчанию компилятор C # будет обращаться к mscorlib.dll, но для других DLL вам нужно сообщить компилятору сборку, в которой расположены классы. Они известны как ссылки.
Я надеюсь, что теперь все ясно!
От DotNetBookZero Чарльз Питзольд
У MSDN есть хорошее объяснение :
Сборки являются строительными блоками приложений .NET Framework; они образуют основную единицу развертывания, контроля версий, повторного использования, определения объема активации и разрешений безопасности. Сборка - это набор типов и ресурсов, созданных для совместной работы и формирования логической единицы функциональности. Сборка предоставляет общеязыковой среде выполнения информацию, необходимую для понимания реализаций типов. Для среды выполнения тип не существует вне контекста сборки.
Сборка - это набор типов и ресурсов, которые образуют логическую единицу функциональности. Все типы в .NET Framework должны существовать в сборках; общеязыковая среда выполнения не поддерживает типы вне сборок. Каждый раз, когда вы создаете приложение Microsoft Windows®, службу Windows, библиотеку классов или другое приложение в Visual Basic .NET, вы создаете одну сборку. Каждая сборка сохраняется в виде файла .exe или .dll.
Источник: https://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic4
Для тех, у кого есть опыт работы с Java, надеюсь, что следующая диаграмма прояснит понятия -
Сборки похожи на файлы jar (содержащие несколько файлов .class). Ваш код может ссылаться на существующую сборку, или сам код может быть опубликован как сборка для другого кода для ссылки и использования (вы можете думать об этом как о jar-файлах в Java, которые вы можете добавить в зависимости вашего проекта).
В конце дня сборка - это скомпилированный код, который можно запустить в любой операционной системе с установленным CLR. Это то же самое, что сказать, что файл .class или jar-пакет могут работать на любом компьютере с установленной JVM.
В .Net сборка может быть:
Коллекция различных управляемых частей , содержащих
Types (or Classes),Resources (Bitmaps/Images/Strings/Files),Namespaces,Config FilesсоставленныйPrivatelyилиPublicly; развернут в папкуlocalилиShared (GAC);discover-ableдругимиprograms/assembliesи; может быть версионным.
Так как сборка - это самая маленькая единица контроля версий, развертывания и повторного использования кода в Microsoft.Net.
Это содержит:
- Assembly Identity
- Manifest
- Metadata
- MSIL Code
- Security Information
- Assembly Header
Сборка является фундаментальной частью программирования с использованием .NET Framework. Он содержит код, который CLR выполняет код MSIL (Microsoft Intermediate Language) в переносимом исполняемом файле, не будет выполняться, если у него нет связанного манифеста сборки.
Приложения .NET создаются путем объединения любого количества сборок. Проще говоря, сборка - это не что иное, как версионный двоичный файл с самоописанием (DLL или EXE), содержащий некоторую коллекцию типов (классы, интерфейсы, структуры и т. Д.) И необязательные ресурсы (изображения, таблицы строк и еще много чего). В настоящее время нужно помнить одну вещь: внутренняя организация сборки .NET не похожа на внутреннюю организацию классического COM-сервера (независимо от расширений общих файлов).
В .NET, когда мы компилируем наш исходный код, сборка генерируется в Visual Studio. Сборка состоит из двух частей Manifest и IL (Intermediate Language). Манифест содержит метаданные сборки, означающие требования к версии сборки, идентификационные данные безопасности, имена и хэши всех файлов, составляющих сборку. IL содержит информацию о классах, конструкторах, методе main и т. Д.
Я нашел эту ссылку очень полезной. Это даже дает представление о роли IL в .NET.
http://www.codeguru.com/columns/csharp_learning/article.php/c5845/C-FAQ-15--What-is-an-Assembly.htm
Решения Visual Studio состоят из одного или нескольких проектов. Например: консольные проекты могут производить сборку . Сборка - это логически кусок кода, который может быть отправлен заказчикам, и физически .EXE (исполняемая программа) или .DLL (для повторного использования другими программами).
Сборки содержат информацию о содержимом, версиях и зависимостях, приложениям, которые их используют, не нужно полагаться на внешние источники, такие как реестр в системах Windows, для правильной работы. Сборки уменьшают конфликты .dll и делают ваши приложения более надежными и более простыми в развертывании.
Это набор типов и ресурсов, созданных для совместной работы и формирования логической единицы функциональности. Сборки принимают форму исполняемых (.exe) или файлов динамически подключаемых библиотек (.dll) и являются строительными блоками приложений .NET. Они предоставляют общеязыковой среде выполнения информацию, необходимую для понимания реализаций типов.
Каждая сборка имеет файл манифеста сборки. Подобно оглавлению сборочный манифест содержит:
Чтобы использовать сборку в приложении, необходимо добавить ссылку на нее. После ссылки на сборку все доступные типы, свойства, методы и другие члены ее пространств имен становятся доступными для вашего приложения, как если бы их код был частью вашего исходного файла.
Таким образом, мы все знаем, что наш исходный код преобразован в промежуточный язык Microsoft (MSIL). Во время выполнения CLR (Common Language Runtime) преобразует MSIL в собственный код с помощью JIT-компилятора. Перед преобразованием кода MSIL необходимо пройти процесс проверки, который проверяет MSIL + MetaData (имя сборки, версия, ссылки): чтобы выяснить, можно ли определить, что код безопасен по типу. если он проходит проверку, то MSIL преобразуется в собственный код. Все вызванные методы конвертируются в машинный язык и сохраняются в кеше для последующего использования.