Как создать библиотеку классов в c

Создание библиотек
Рано или поздно, вы придете к мысли об объединении своих собственных наработок в единый пакет (ну или в несколько пакетов), чтобы созданные один раз классы можно было использовать в разных программах. В C# такие пакеты называют сборками. Сборки могут быть оформлены в виде DLL, но не так называемых нативных DLL, а специализированных, .NET DLL (часто говорят, «нэтовских» DLL). Вот о создании таких DLL я и расскажу в этой статье.
Первым делом, мы создадим новый проект в Visual Studio (о том, как скачать и установить MS Visual Studio я рассказывал в уроке № 2 базового курса C#).
Для этого, выбираем пункт главного меню «Файл — Создать — Проект», как показано на рисунке ниже.

Создание нового проекта в MS Visual Studio
После чего, откроется окно «Создание проекта», в котором нужно выбрать в левой части окна «Шаблоны — Visual C# — Windows», в главной рабоче области выбрать пункт «Библиотека классов», а в нижней части окна, ввести имя библиотеки, как показано на рисунке ниже (ну и желательно, указать расположение, создаваемого проекта).

Выбор типа создаваемого проекта
После указания всех параметров нужно нажать на кнопку «OK» и дождаться создания проекта. После успешного создания проекта мы увидим примерно следующее окно (я отметил важные участки на изображении):

Созданный проект библиотеки
Мы видим, что у нас есть класс с именем «Class1» (это видно в обозревателе решений, или Solution Explorer в английской версии программы). Давайте переименуем его, присвоим ему осмысленное название. А называться он будет «INIManager», в библиотеку мы поместим класс, из статьи Работа с INI-файлами в C#, чтобы не придумывать что-то на ходу. Так вот, чтобы переименовать классы, нам нужно навести на его имя в обозревателе решений мышь и вызвать контекстное меню, в котором выбрать пункт «Переименовать», как показано на рисунке ниже.

После чего, в области редактирования (которая автоматически станет активной, ввести «INIManager» и нажать на клавишу Enter), в результате появится сообщение с запросом подтверждения примерно следующего вида:

Подтверждения переименования класса
В котором нужно нажать на кнопку «Да», таким образом, будет переименован и класс и файл исходного кода, в котором он содержится.
А теперь, вставим в класс следующий код:
//Конструктор, принимающий путь к INI-файлу public INIManager(string aPath) < path = aPath; >//Конструктор без аргументов (путь к INI-файлу нужно будет задать отдельно) public INIManager() : this("") < >//Возвращает значение из INI-файла (по указанным секции и ключу) public string GetPrivateString(string aSection, string aKey) < //Для получения значения StringBuilder buffer = new StringBuilder(SIZE); //Получить значение в buffer GetPrivateString(aSection, aKey, null, buffer, SIZE, path); //Вернуть полученное значение return buffer.ToString(); >//Пишет значение в INI-файл (по указанным секции и ключу) public void WritePrivateString(string aSection, string aKey, string aValue) < //Записать значение в INI-файл WritePrivateString(aSection, aKey, aValue, path); >//Возвращает или устанавливает путь к INI файлу public string Path < get < return path; >set < path = value; >> //Поля класса private const int SIZE = 1024; //Максимальный размер (для чтения значения из файла) private string path = null; //Для хранения пути к INI-файлу //Импорт функции GetPrivateProfileString (для чтения значений) из библиотеки kernel32.dll [DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileString")] private static extern int GetPrivateString(string section, string key, string def, StringBuilder buffer, int size, string path); //Импорт функции WritePrivateProfileString (для записи значений) из библиотеки kernel32.dll [DllImport("kernel32.dll", EntryPoint = "WritePrivateProfileString")] private static extern int WritePrivateString(string section, string key, string str, string path);
И в самом начале файла с классом, в блоке директив using, подключить пространство имен «System.Runtime.InteropServices», как показано в фрагменте кода ниже (добавленная строка отмечена):
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices;
Всё, теперь можно собрать проект («Сборка — Собрать решение» в главном меню русской версии Visual Studion). Только запускать проект не нужно, всё равно это бессмысленно, DLL так просто не запустить… Вместо этого, давайте найдем созданную DLL на диске своего ПК. Для этого нужно перейти в папку, в которой мы создавали проект (путь мы указывали при создании проекта). В моем случае, это «D:\Программирование\Projects\FirstDLL». А уже в этой папке перейти по пути «FirstDLL\bin\Debug», и в папке «Debug» будет файл «FirstDLL.dll». Который нужно скопировать и сохранить в удобное место, чтобы потом подключить к другому проекту. Как это делать, я расскажу в одной из следующих статей. А эта заканчивается, первую библиотеку мы создали!
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Как создать библиотеку классов C# в VSCODE?
Всем привет, сижу на Линуксе. Начинаю изучать практически c#. Но появился вопрос как создать библиотеку классов в C#, а именно VS CODE. Поэтому надо работать с терминалом. Кто-то скажет как это сделать? А то по оф. документации ничего не понял.
Помогите)
UPD:
Забыл добавить, что я знаю как создать саму библиотеку (dotnet new classlib), но мне нужно добавить эту библиотеку в другой консольный проект
- Вопрос задан более двух лет назад
- 325 просмотров
Комментировать
Решения вопроса 1

Василий Банников @vabka Куратор тега C#
Токсичный шарпист
пиши в консоли
dotnet new classlib
Чтобы добавить ссылку на другой проект — можно использовать
dotnet add reference
или вручную прописать ProjectReference в csproj
Ещё можно использовать плагин «vscode-solution-explorer», с ним можно будет добавлять ссылки через ПКМ-Add reference
[C#] Создание библиотеки классов (DLL)
Теперь нужно создать проект самой DLL.
Для этого нужно:
1) Нажать в окне «Обозреватель решений» по строке Решение «Ваше_название» правой кнопкой мыши.
2) В открывшемся окне «Добавить->Создать проект»
3) Делам все так же как и при создании первого проекта. Но меняем название и выбираем «Библиотека классов»
4) Нажимаем ОК
5) В созданном проекте переименуйте файл Class1.cs в ваше название у меня это Vector.cs
Это для библиотеки классов. (второго проекта)
Код:
using System; //Стандартная библиотека namespace Vector //Пространство имен (по этому имени подключается библиотека) < public enum vType < NULL, RANDOM, >//Для примере создал 2 класса. //Vector2 - Класс 2d вектора. Vector3 - тоже самое только для 3D мира public class Vector2 //Публичный (доступен всем) класс с именем Vector2 < public float x < get; set; >//Публичная переменная типа float (Не целое число. К примеру: 5.41) c именем x public float y < get; set; >//Публичная переменная типа float (Не целое число. К примеру: 5.41) c именем y //Конструктор класса через который можно создать новый экземпляр класса. Принимает уже готовый класс. В этом случае вещь бесполезная. //Но если добавить оператор который позволяет сложить 2 класса и вернет новый класс Vector2 то как раз этот конструктор пригодится. public Vector2(Vector2 vector) < x = vector.x; //Берем переменную x из присланного экземпляра и пишем ее в переменную x нашего экземпляра y = vector.y; //Берем переменную y из присланного экземпляра и пишем ее в переменную x нашего экземпляра >//Еще один конструктор. Но этот уже позволяет задать точную позицию. public Vector2(float x, float y) < this.x = x; //Берем переменную x (this. означает что переменная будет браться не из функции а из экземпляра) и записываем туда полученное значение. this.y = y; //Берем переменную y (this. означает что переменная будет браться не из функции а из экземпляра) и записываем туда полученное значение. >//А тут уже интересно. //В данном конструкторе есть переменные которые уже заданы по умолчанию. Вот тут через enum (который в начале скрипта) можно указать тип. //Либо не указывать нечего и тогда будут стандартные значения. minRandom и maxRandom позволяют задать от какого до какого значения нужно создать вектор. //Но они работают только если type равен vType.RANDOM public Vector2(vType type = vType.NULL, int minRandom = 0, int maxRandom = 5) < //switch почти тоже самое как if(p1 == p2)<>но он быстрей и меняется только 1 значение так что юзаем его. type - полученная из конструктора переменная. switch (type) < case vType.NULL: // Если type равно vType.NULL то создаем вектор с координатами x=0, y=0. x = 0;//Присвоение переменным значения 0 y = 0; break;//Выход из конструкции switch (то есть код продолжит выполнение после закрывающей скобки) case vType.RANDOM://Ну а если type равен vType.RANDOM то. Random r = new Random();//Создаем новый экземпляр класса Random (Для него и нужна библиотека System в первой строке скрипта) x = r.Next(minRandom, maxRandom); // Присваиваем переменной x то значение которое вернет функция Next в классе Random который у нас присвоен переменной r y = r.Next(minRandom, maxRandom); // Присваиваем переменной y то значение которое вернет функция Next в классе Random который у нас присвоен переменной r break; >> //Так как хотелось бы узнать что у нас записано в классе создаем функцию ToString() //Тут маленький облом. Она уже существует и вернет название класса. Чтобы ее переопределить нужно дописать override. //Публичная функция ToString которая вернет string (то есть если написать string p = ToString(); это будет тоже самое что написать string p = "Текст";) //Только вместо "Текст" там будет значение переменных из класса. public override string ToString() < //return - заставляет вернуть значение. string.Format - форматирует строку там где написано будет вставлена первая переменная аргументов //тут это x и т.д. return string.Format(" ", x, y); > > //Класс Vector3 все так же как и в Vector2 только есть еще z координата. public class Vector3 < public float x < get; set; >public float y < get; set; >public float z < get; set; >public Vector3(Vector3 vector) < x = vector.x; y = vector.y; z = vector.z; >public Vector3(float x, float y, float z) < this.x = x; this.y = y; this.z = z; >public Vector3(vType type = vType.NULL, int minRandom = 0, int maxRandom = 5) < switch (type) < case vType.NULL: x = 0; y = 0; z = 0; break; case vType.RANDOM: Random r = new Random(); x = r.Next(minRandom, maxRandom); y = r.Next(minRandom, maxRandom); z = r.Next(minRandom, maxRandom); break; >> public override string ToString() < return string.Format(" ", x, y, z); > > >
Жмем правой кнопкой по проекту библиотеки (у меня это Vector) после чего по кнопке «Собрать»
Теперь как это использовать:
В первом проекте «Правой кнопкой по вкладке Ссылки->Добавить ссылку» и выбираем библиотеку (она в папке проекта библиотеки-bin-Debug)
Код для файла Program.cs (главный класс консольного приложения)
Код:
using System; using Vector; //Подключаем библиотеку namespace Loader < class Program //Класс Program < //Создаем экземпляр класса Vector3 через конструктор public Vector3(vType type = vType.NULL, int minRandom = 0, int maxRandom = 5) //И указываем что это будет рандомный (случайный) вектор. public static Vector3 v3_1 = new Vector3(vType.RANDOM); //Создаем экземпляр класса Vector3 через конструктор public Vector3(vType type = vType.NULL, int minRandom = 0, int maxRandom = 5) //Оставляем стандартную комбинацию параметров. public static Vector3 v3_2 = new Vector3(); //Тоже самое только не Vector3 а Vector2. public static Vector2 v2_1 = new Vector2(vType.RANDOM); //Указываем в конструкторе точные координаты. public static Vector2 v2_2 = new Vector2(50, 10); static void Main(string[] args)//Главная функция программы. < //Выводим в консоль значение векторов v3_1 и v3_2. \n - перенос на новую строку //Как раз тут и пригодилась функция ToString() Console.WriteLine("v3_1: \nv3_2: ", v3_1.ToString(), v3_2.ToString()); Console.ReadKey();//Ждем нажатие любой кнопки //После нажатия кнопки //Выводим в консоль значение векторов v2_1 и v2_2. \n - перенос на новую строку Console.WriteLine("v2_1: \nv2_2: ", v2_1.ToString(), v2_2.ToString()); Console.ReadKey();//Ждем нажатие любой кнопки (после ее нажатия программа завершит свою роботу.) > > >
После запуска программы (кнопка Пуск на панели инструментов) все как и заказывали.
Всем удачи. Фыр, фыр :3
Отредактировано Jack_Savage (2017-03-23 14:26:39)
Программирование C#,C++,C
Начнем с того, что может понадобиться использовать методы одного класса несколько раз. Для этих целей служат библиотеки. Порой не совсем очевидно как их подключать в проект и использовать. Сегодня на простом примере разберем как создать библиотеку и подключить в наш проект.
1. Создание библиотеки
Для начала создадим проект:
Файл — Создать проект — Библиотека классов ( File — New project — Class Library)
Назовем ее ClassLibrary1.

Далее создадим метод, который потом нам пригодится (в нашем примере расчет процентной ставки вклада, в зависимости от введенных данных):
2. Создание проекта и подключение библиотеки ClassLibrary1
Создаем, например, консольное приложение и далее правой кнопкой нажимаем на название проекта и выбираем добавить ссылку (Add Reference):

Появится окно выбора библиотеки. Переходим на вкладку обзор (Browse) и выбираем библиотеку, созданную ранее (в нашем случае ClassLibrary1.dll):

Нажимаем OK и справа в обозревателе решений (Solution Explorer) во вкладке References должна быть написана библиотека выбранная выше:

Значит библиотека добавлена и можно ее использовать. Осталось еще подключить ее в самом коде программы: «using ClassLibrary1;».
В нашем случае вызов функции библиотеки происходит так:
Class1.Summ_Mass(summ, months, procent);
Название_класса.Метод (ввиду того, что в классе объявлен статический метод и нет необходимости создавать экземпляр класса)
Вот, собственно, и все, что необходимо, чтобы подключить и использовать библиотеку в своем проекте.
1 комментарий:
Lucky Club Online Casino Site: Casino Software — Lucky Club
Welcome to Lucky Club Online Casino site! Play with over 500 of the latest casino games from the biggest names luckyclub in the industry, including Blackjack, Roulette, Ответить Удалить




