Очень часто в своей работе вы сталкиваетесь с такой ситуацией.
Перед вами стоит задача написать "супер-блокнот", который должен поддерживать все функции обычного блокнота, но с множеством дополнительных возможностей, каким-то образом, каким-то образом, каким-то образом, каким-то образом, каким-то образом, каким-то образом, каким-то образом, каким-то образом, каким-то образом, используя bra-text и Предпочтительно наличие программы. Для этого было решено добавить различные новые функции. Одним из них является обязанность подсчитывать и отображать количество слов в тексте.
Через несколько недель программа была написана и впоследствии выпущена в Интернете, пользователи оценили новый продукт и начали его использовать. Цель была достигнута.
Проходит время, и ставится новая задача: написать программу "суперпарсер". Одной из функций этой программы является подсчет слов в тексте. Вы понимаете, что вам нужно разработать способ продолжать считать слова снова. Однако в то же время вы вспоминаете, что недавно разработали программу, использующую эту функцию. Чтобы не укреплять колесо, вы открываете исходный код программы ‘SuperNotePad’ и копируете весь метод в исходный код новой программы ‘SuperParser’. Что ж, теперь вам не придется снова тратить время на написание этого метода, и вы сможете уделить больше времени остальной части программы. Проблема решена.
Но что будет, если метод WordCount был написан не вами, а, например, коллегой по работе, который по каким-то причинам не имеет доступа к исходному коду программы ‘SuperNotePad’? Это первый вариант, и копирование метода из источника не сработает. Этот метод вынужден писать себя как МММ, что печально.
Но вот вы звоните своему коллеге на работу и говорите: знаешь, когда я разработал этот метод, я подумал, что мне нужно использовать его где-то еще, поэтому я решил поместить его в отдельную сборку как динамическую библиотеку. ФАЙЛ (DLL). Если вы скопируете этот DLL-файл в свой проект и подключите его как внешнюю сборку, вы сможете использовать его, если у вас есть доступ к моему методу.
Потрясающе!!! Выполните все описанные действия. Нужный метод появляется в программе ‘super parser’. Проблема решена, и вам не придется переписывать код заново.
Это конец сказки. Теперь перейдем к более углубленному семинару.
Что такое DLL?
DLL (Dynamic-Link Library) — это динамически подключаемая библиотека или, сокращенно, динамическая библиотека.
Как упоминалось ранее, динамические библиотеки позволяют повторно использовать уже созданный код и улучшают переносимость кода. Все, что вам нужно сделать, это оставить файл на флешке или скачать DLL-файл из Интернета, а затем добавить его в текущий проект, чтобы сразу же получить различные дополнительные возможности вашего приложения. Вы также должны знать, что файл DLL может содержать любое количество типов, членов и мест расположения имен.
Создание DLL-файла
Сначала необходимо определить тип приложения, которое вы хотите создать.
Выберите библиотеку классов. Это означает создание файла динамической библиотеки (DLL).
Вы также можете определить версию фрейма, для которой вы хотите создать проект.
После того, как Visual Studio создаст скелет проекта, вы увидите следующее
Итак, как будет выглядеть окно поиска решения
А вот так выглядит рабочая зона, в которой обычно пишут программный код
Затем вам дается пространство имен: car и класс: class1. Class1 — не самое удачное имя — давайте заменим Class1 на BMW и внесем несколько изменений в код, чтобы добавить способ извлечения имени класса.
Итак, код написан, его нужно скомпилировать, чтобы получить сборку. Если вы попытаетесь нажать F5 или Ctrl+F5, появится следующее окно
Эта ошибка указывает только на то, что был создан файл динамической библиотеки (DLL), а не исполняемый файл (EXE), который не может быть выполнен.
Чтобы скомпилировать проект, нажмите f6 и просмотрите файл car.dll в каталоге отладки Bin .
Чтобы проверить, был ли создан файл библиотеки, используйте команду Просмотреть все файлы на вкладке Проводник решений.
Сборка была успешно создана как архив динамической библиотеки.
Далее перейдите в папку bin debug и используйте элемент открытия папки Windows для быстрого перехода к текущему каталогу проекта.
Скопируйте полученный файл сборки (в данном случае файл car.dll) во временную папку. На самом деле, вам не нужно этого делать. Вы можете оставить этот файл в этой папке, но для удобства создайте новую папку и поместите туда созданные файлы библиотеки.
Затем закройте текущий проект и создайте новый. Но на этот раз выберите тип проекта — Apply Console.
Создайте новый проект.
Создается новый проект. Затем подключите библиотеку (car.dll) к текущему проекту.
Подключите DLL.
Для этого щелкните правой кнопкой мыши на папке ссылок в окне Solution Explorer и выберите Add Reference.
- Выберите вкладку Поиск.
- Найдите папку, содержащую библиотечный файл, который вы хотите создать (в данном примере car.dll).
- Выделите нужный файл библиотеки и нажмите OK.
Вы увидите, что ссылка на сборку car.dll, где хранится IL-код, была успешно добавлена в вашу текущую работу. Помните, что после компиляции весь написанный вами код преобразуется в IL в промежуточном коде (CIL и MSIL — это одно и то же). Вы также увидите, что копия библиотеки была помещена в Bin Debug.
Если вы забыли, какое пространство, тип или член созданной библиотеки включено. Вы всегда можете использовать инструменты visual studio, такие как Object Browser. Перейдите на вкладку Solution Explorer и откройте папку Browse — правильно — щелкните на ранее добавленной библиотеке (car.dll) и выберите View в Object Browser, появится окно следующего вида.
Вы можете увидеть содержимое сборки в окне браузера объектов.
Содержание доступно по мере подключения комплекса. Далее выполните необязательные действия.
Добавьте пространство имен автомобилей из библиотеки car.dll, используя использованные ключевые слова, создайте объект в классе BMW и выполните метод output_name_class().
- Создайте файл динамической библиотеки (DLL).
- Добавьте связь с DLL-файлом в папку ссылок и подключите созданную библиотеку к проекту.
- (Необязательно) Включите пространство имен из подключенной сборки и используйте ключевое слово using или используйте полное имя. namespace.type (car.bmw).
- Прибыль.
И, наконец, не так много информации о типах групп.
Наборы различают следующие основные типы: общие и частные.
Частные советы.
Это библиотечные файлы, такие как ранее созданный файл Car.dll, и содержатся в текущем каталоге приложения или во всем его подкаталоге.
Вернуться к началу статьи.
После создания приложения суперпарсера вы получили сборку в виде файла (exe). Далее я решил протестировать программу и передать ее другу. В то же время он упомянул, что если он захочет добавить в программу дополнительную функциональность, то ему нужно будет поместить библиотечный файл Car.dll рядом с файлом exe. Затем он сможет сосчитать слова в тексте. Библиотека хранится в том же каталоге, что и исполняемый файл.
Общие сборки.
Это сборки, предназначенные для многократного использования различными приложениями, установленными на компьютере.
Например, предположим, что у вас есть две программы. При этом используется файл Car.dll. Чтобы не копировать этот файл во все папки, его можно поместить в специальное место, называемое Глобальный кэш сборок (GAC) или Global Assembly Cache. Таким образом, сборка хранится в специальном месте, и программа всегда знает, где находится эта конкретная библиотека кода. Если используются частные методы, библиотека должна быть помещена в каждую папку взаимодействующего приложения.