Створення бібліотеки динамічного компонування dll довідник по c #
Створення бібліотеки динамічного компонування Dll

Іноді при запуску будь-якої програми з'являється повідомлення, що не знайдений файл * .dll. Для операційних систем Microsoft Windows, велика частина функціональних можливостей операційної системи забезпечується бібліотеками динамічного компонування (DLL). Крім того, деякі можливості програм можуть бути реалізовані в бібліотеках DLL. Наприклад деякі програми можуть містити багато різних модулів і при роботі використовувати тільки частина з них. Таким чином операційна система і програми завантажуються швидше, працюють швидше і займають менше місця на диску комп'ютера.
Що таке DLL?
DLL - це бібліотека, яка містить код і дані, які можуть використовуватися кілька програмами одночасно. Наприклад, в операційних системах Windows, бібліотека Comdlg32.dll виконує загальні функції, пов'язані з діалоговими вікнами. Таким чином кожна програма може використовувати функцію, яка міститься в цій бібліотеці для реалізації діалогового вікна Відкрити. Це дозволяє підвищити рівень повторного використання коду і ефективного використання пам'яті.
За допомогою бібліотек можна реалізувати модульність для програми, у вигляді окремих компонентів. Наприклад бухгалтерську програму можна продати по модулях. Кожен модуль може бути завантажений в основній програмі під час виконання установки. Окремі модулі завантажується тільки при запиті функцій закладених в них, тому завантаження програми виконується швидше.
Крім того поновлення легше застосувати для кожного модуля, не впливаючи на інші частини програми. Наприклад є програма по зарплаті і треба змінити податкові ставки за кожен рік. Коли ці зміни ізольовані в бібліотеці, можна застосувати поновлення без необхідності побудови або установки програми цілком. Давайте розглянемо приклад створення бібліотеки з найпростішими математичними методами, такі як твір, поділ, сума і різниця.
Для початку, створимо новий проект, для цього запустіть Microsoft Visual Studio і перейдіть в меню Файл -> Створити -> Проект ... або виконайте поєднання клавіш Ctrl + Shift + N.

У діалоговому вікні виберете версію Framework, а в лівій частині «Встановлені шаблони» виберете «Visual C #». в центральній частині вам буде представлений список шаблонів, виберете «Бібліотека класів» і введіть ім'я бібліотеки, можна залишити за замовчуванням.

У вас відкриється вкладка з класом за замовчуванням.

За замовчуванням створюється клас Class1. перейменуємо його у клас Calculator. Для цього перейдіть в меню Вид -> Класи або виконайте поєднання клавіш Ctrl + W. з наступним натисканням клавіші C.

У правій частині програми у вас відкриється вкладка «Вікно класів».

Виберете за замовчуванням створений клас Class1, зробіть клік правою клавішею миші по ньому і виберете «Перейменувати ...».

У вікні, введіть нове ім'я класу Calculator і натисніть кнопку OK, зверніть увагу, що дане вікно дозволяє перейменувати клас у всьому проекті.


Додамо до класу Calculator кілька методів і додамо до них опис.
За замовчуванням для всіх проектів варто режим побудови Debug (режим налагодження), переведемо проект в режим побудови кінцевої версії (Release). Для цього перейдіть в оглядач рішень і зробивши клік правою клавішею миші по назві проекту, виберете в контекстному меню пункт «Властивості».

У вікні «Сторінки властивостей Рішення" ClassLibrary1 "» виберете всюди конфігурацію Release, як показано на скріншоті нижче.

Напевно все помічали, що при наборі коду, з'являється підказка до методів або функцій. Ми задали таку підказку в тегах. Але якщо зараз просто виконати побудову бібліотеки, то при підключенні до інших проектів ніяких підказок видно не буде. Що б усунути цю проблему, нам необхідно сформувати XML файл документації до проекту. Для цього в браузері рішень виконайте клік правою клавішею миші по назві бібліотеки і в контекстному меню виберіть пункт «Властивості».

Після цих дій у вас відкриється нова вкладка з властивостями проекту ClassLibrary1. Виберете в вкладку «Побудова» і знайдіть розділ «Висновок», там вам буде запропоновано ввести шлях куди буде виконано побудова кінцевої версії бібліотеки і пункт необхідний нам для побудови xml файлу документації, тут вам необхідно просто поставити галочку як показано на скріншоті нижче. Тут важливо щоб бібліотека і файл документації перебували в одному місці, тому перевірте щоб їх шлях виведення збігався.

Залишилися останні кроки і ми отримаємо готову для використання бібліотеку. І так продовжимо, вам необхідно у верхній частині програми вибрати режим конфігурації Release як показано на скріншоті нижче.
Після цього, виконаємо побудову рішення. Натиснувши на клавіатурі клавішу F6.

Як тільки програма закінчить побудову, можна перейти в директорію з проектом і подивитися що вийшло. На цьому етапі закінчилося створення бібліотеки.

Для перевірки працездатності бібліотеки створимо тестовий проект. Виконайте Файл -> Створити -> Проект ...

Виберете із запропонованих шаблонів, шаблон «Додаток Windows Forms Visual C #». Задайте ім'я проекту і натисніть кнопку OK.

Після створення проекту, в браузері рішень зробіть клік правою клавішею миші по розділу «Посилання» і виберете в контекстному меню пункт «Додати посилання ...».

Виберете вкладку «Огляд» і вкажіть вашу бібліотеку.

Якщо ви все успішно виконали, в розділі «Посилання» у вас з'явиться назва вашої бібліотеки.

Зробіть клік правою клавішею миші по головній формі вашого проекту і в контекстному меню виберіть пункт «Властивості».

У бічній панелі відкриються «Властивості» форми. Знайдіть метод Load і зробіть подвійний клік лівою клавішею миші по ньому, у вас відкриється нова вкладка з доданим методом Form1_Load.

Додамо простір імен з назвою нашої бібліотеки.

Пропишіть виклик декількох методів з бібліотеки і висновок результату в діалоговому вікні «MessageBox». Зверніть увагу що при виборі методом з бібліотеки у вас показується підказка яку ми прописували. Якщо такого не відбувається то, xml файл документації відсутня в директорії з бібліотекою. Приклад підказок ви можете подивитися на скріншоті нижче.

Запустіть проект, натиснувши клавішу F5. І ви побачите результат виконання методів прописаних в бібліотеці, з параметрами які ви передали при виклику.