Создание библиотеки классов в visual studio
Среди шаблонов Visual Studio для Silverlight 2 есть шаблон , позволяющий создавать библиотеку классов, которую можно без труда использовать в других проектах. Эта библиотека классов может включать элементы управления Silverlight . В данном разделе на простом примере создания элемента управления Square (Квадрат) будет продемонстрировано добавление элементов управления в библиотеку.
Прежде всего, откроем Visual Studio и выберем New Project в меню File. Появится диалоговое окно New Project . Создайте в нем новый проект библиотеки классов Silverlight и присвойте ему соответствующее имя. Пример этого можно увидеть на рис. 9.7.
Рис. 9.7. Создание новой библиотеки классов Silverlight
Чтобы добавить новый элемент управления Silverlight , щелкните правой кнопкой мыши на проекте, выберите Add и затем выберите New Item , как делали это ранее (если необходимо освежить память , вернитесь к рис. 9.3), и назовите его SquareControl (Элемент управления квадрат).
Теперь можете редактировать XAML и код элемента управления, выполняя те же шаги, что и ранее. Вот пример XAML для элемента управления Square :
Примечание Некоторые версии Visual Studio Tools создают Grid вместо Canvas под именем LayoutRoot . В данном разделе используется Canvas , но он может быть без проблем заменен на Grid .Рис. 9.8. Проект библиотеки классов в Visual Studio
Компиляция этого решения обеспечит создание библиотеки классов, которая может быть включена в другие проекты.
Чтобы использовать эту библиотеку классов, необходимо просто создать новый проект и добавить в него ссылку на нее. Итак, создадим новый проект Silverlight . Для этого в диалоговом окне New Project (File , New Project ) выберем шаблон Silverlight Project .
Стандартный шаблон создает решение с двумя проектами: элемент управления Silverlight и Веб- сайт ASP . NET для его размещения.
Проект Silverlight Control позволяет добавлять ссылку, щелкнув правой кнопкой мыши папку References и выбрав Add Reference (рис. 9.9).
Рис. 9.9. Добавление ссылки на ваш проект Silverlight
Через открывшееся диалоговое окно можно перейти в каталог, в котором располагается DLL , скомпилированная из вашего проекта библиотеки классов. Она должна располагаться в подкаталоге ClientBin. Добавьте ссылку, и ее можно будет увидеть в списке ссылок. Если ваша библиотека классов имеет какие-либо зависимости, они также будут представлены в этом списке. На рис. 9.10 показана ссылка на сборку SquareLib , после ее удачной компиляции.
Рис. 9.10. Использование вашей специальной ссылки
Теперь можно вернуться к Page.xaml и добавить ссылку на пространство имен , что позволит использовать элементы управления из этой сборки. В этом очень поможет функция IntelliSense Visual Studio . В начале файла XAML , где описываются пространства имен, добавьте новый атрибут xmlns и задайте для него префикс (например, sq, как показано на рис. 9.11). IntelliSense предоставит список доступных сборок или схем. Вам просто надо выбрать имя необходимой сборки. В данном случае, это SquareLib , поэтому выбирайте ее. Обратите внимание, что ваш список сборок может выглядеть иначе, чем представленный на рис. 9.11.
Выполнив все это, вы получите ссылку на соответствующе пространство имен и сборку. Их можно увидеть здесь:
Поскольку для этого пространства определен префикс sq , добавлять элементы управления из него можно посредством IntelliSense , используя этот префикс .
Итак, например, если в рамках элемента LayoutRoot ввести символ < для открытия узла XML , в выпадающем списке среди предлагаемых опций вы увидите sq:. Если вставить его в код, вы получите список доступных классов, как показано на рис. 9.12.
Рис. 9.12. IntelliSense для библиотеки классов специального элемента управления
Наконец, приведем пример XAML с несколькими экземплярами SquareControl :
Заключение
В данной лекции представлена гибкая модель расширяемости, предлагаемая Silverlight 2. Вы научились добавлять элементы управления в приложения и инкапсулировать функциональность в элемент управления для упрощения повторного использования. Также было показано, как с помощью шаблона библиотеки классов Silverlight можно создавать элементы управления , компилируемые в сборки . NET , на которые могут ссылаться и использовать другие проекты.
На основании полученных знаний вы можете приступать к созданию собственных элементов управления или дорабатывать стандартные элементы управления , о которых рассказывалось в лекциях 7 и 8.
В "Создание взаимодействующих с сервером приложений в Silverlight" , "Создание взаимодействующих с сервером приложений в Silverlight ", мы перейдем к немного более сложным вопросам и рассмотрим, как в Silverlight 2 реализуется работа с сетью и связь .
В этом руководстве вы создадите простую служебную библиотеку с одним методом для обработки строк.
После создания библиотеки классов ее можно распространить как независимый компонент или включить в состав одного или нескольких пакетов приложения.
Предварительные требования
Создание решения
Начните с создания пустого решения для размещения проекта библиотеки классов. Решение служит контейнером для одного или нескольких проектов. Вы будете добавлять дополнительные связанные проекты в одно решение.
Запустите Visual Studio Code.
В главном меню выберите Файл > Открыть папку (в macOS щелкните Открыть. ).
В диалоговом окне Открыть папку создайте папку ClassLibraryProjects и щелкните Выбор папки (в macOS щелкните Открыть).
Откройте терминал в Visual Studio Code, выбрав в основном меню пункт Вид > Терминал.
Откроется окно Терминал с командной строкой в папке ClassLibraryProjects.
В окне терминала введите следующую команду:
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Создание проекта библиотеки классов
В терминале выполните следующую команду, чтобы создать проект библиотеки классов:
Команда -o или --output задает расположение для размещения созданных выходных данных.
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Чтобы добавить проект библиотеки в решение, выполните следующую команду:
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Откройте файл Class1.cs и замените его содержимое следующим кодом:
Библиотека классов UtilityLibraries.StringLibrary содержит метод StartsWithUpper , который возвращает значение Boolean, указывающее, является ли первым символом текущего экземпляра строки символ верхнего регистра. Символы верхнего регистра определяются по стандарту Юникод. Метод Char.IsUpper(Char) возвращает true , если символ является символом верхнего регистра.
Метод StartsWithUpper реализуется как метод расширения, чтобы вызывать его можно было так же, как любой член класса String.
Выполните следующую команду, чтобы выполнить сборку решения и убедиться, что проект компилируется без ошибок.
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Добавление консольного приложения в решение
Добавьте консольное приложение, использующее библиотеку классов. В приложении пользователю будет предложено ввести строку и сообщить, начинается ли строка с символа верхнего регистра.
В терминале выполните следующую команду, чтобы создать проект консольного приложения:
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Чтобы добавить проект консольного приложения в решение, выполните следующую команду:
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Откройте файл ShowCase/Program.cs и замените все его содержимое следующим кодом:
Сама программа предлагает пользователю ввести строку. Она сообщает, начинается ли строка с символа верхнего регистра. Если пользователь нажимает клавишу ВВОД , не введя никакой строки, приложение завершает свою работу и окно консоли закрывается.
Добавление ссылки на проект
Изначально новый проект консольного приложения не имеет доступа к библиотеке классов. Чтобы позволить приложению вызывать методы из библиотеки классов, создайте в проекте ссылку на проект библиотеки классов.
Выполните следующую команду:
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Запуск приложения
Выполните следующую команду в окне терминала:
Проверьте, как работает программа: вводите строки и нажимайте клавишу ВВОД . Чтобы выйти, нажмите клавишу ВВОД .
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Дополнительные ресурсы
Следующие шаги
В этом руководстве вы создали решение, добавили проект библиотеки и добавили проект консольного приложения, использующего библиотеку. В следующем руководстве вы добавите в решение проект модульного теста.
В этом руководстве вы создадите простую служебную библиотеку с одним методом для обработки строк.
После создания библиотеки классов ее можно распространить как независимый компонент или включить в состав одного или нескольких пакетов приложения.
Предварительные требования
Создание решения
Начните с создания пустого решения для размещения проекта библиотеки классов. Решение служит контейнером для одного или нескольких проектов. Вы будете добавлять дополнительные связанные проекты в одно решение.
Запустите Visual Studio Code.
В главном меню выберите Файл > Открыть папку (в macOS щелкните Открыть. ).
В диалоговом окне Открыть папку создайте папку ClassLibraryProjects и щелкните Выбор папки (в macOS щелкните Открыть).
Откройте терминал в Visual Studio Code, выбрав в основном меню пункт Вид > Терминал.
Откроется окно Терминал с командной строкой в папке ClassLibraryProjects.
В окне терминала введите следующую команду:
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Создание проекта библиотеки классов
В терминале выполните следующую команду, чтобы создать проект библиотеки классов:
Команда -o или --output задает расположение для размещения созданных выходных данных.
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Чтобы добавить проект библиотеки в решение, выполните следующую команду:
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Откройте файл Class1.cs и замените его содержимое следующим кодом:
Библиотека классов UtilityLibraries.StringLibrary содержит метод StartsWithUpper , который возвращает значение Boolean, указывающее, является ли первым символом текущего экземпляра строки символ верхнего регистра. Символы верхнего регистра определяются по стандарту Юникод. Метод Char.IsUpper(Char) возвращает true , если символ является символом верхнего регистра.
Метод StartsWithUpper реализуется как метод расширения, чтобы вызывать его можно было так же, как любой член класса String. Вопросительный знак ( ? ) после string указывает, что строка может иметь значение NULL.
Выполните следующую команду, чтобы выполнить сборку решения и убедиться, что проект компилируется без ошибок.
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Добавление консольного приложения в решение
Добавьте консольное приложение, использующее библиотеку классов. В приложении пользователю будет предложено ввести строку и сообщить, начинается ли строка с символа верхнего регистра.
В терминале выполните следующую команду, чтобы создать проект консольного приложения:
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Чтобы добавить проект консольного приложения в решение, выполните следующую команду:
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Откройте файл ShowCase/Program.cs и замените все его содержимое следующим кодом:
Сама программа предлагает пользователю ввести строку. Она сообщает, начинается ли строка с символа верхнего регистра. Если пользователь нажимает клавишу ВВОД , не введя никакой строки, приложение завершает свою работу и окно консоли закрывается.
Добавление ссылки на проект
Изначально новый проект консольного приложения не имеет доступа к библиотеке классов. Чтобы позволить приложению вызывать методы из библиотеки классов, создайте в проекте ссылку на проект библиотеки классов.
Выполните следующую команду:
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Запуск приложения
Выполните следующую команду в окне терминала:
Проверьте, как работает программа: вводите строки и нажимайте клавишу ВВОД . Чтобы выйти, нажмите клавишу ВВОД .
Выходные данные в терминале выглядят примерно так, как в следующем примере:
Дополнительные ресурсы
Следующие шаги
В этом руководстве вы создали решение, добавили проект библиотеки и добавили проект консольного приложения, использующего библиотеку. В следующем руководстве вы добавите в решение проект модульного теста.
Библиотека классов определяет типы и методы, которые можно вызывать из любого приложения.
Когда вы закончите свою библиотеку классов, вы можете решить, хотите ли вы распространять ее как сторонний компонент или хотите включить ее в качестве компонента, который связан с одним или несколькими приложениями.
Когда вы закончите свою библиотеку классов, вы можете решить, хотите ли вы распространять ее как сторонний компонент или хотите включить ее в качестве компонента, который связан с одним или несколькими приложениями.
Давайте начнем с добавления проекта библиотеки классов в наше консольное приложение; щелкните правой кнопкой мыши папку src в обозревателе решений и выберите « Добавить» → «Новый проект»…
В текстовом поле «Имя» введите «UtilityLibrary» в качестве имени проекта, как показано на следующем рисунке.
Библиотека классов, UtilityLibrary.StringLib , содержит некоторые методы, такие как, StartsWithUpper , StartsWithLower и StartsWithNumber, которые возвращают логическое значение, которое указывает, начинается ли текущий экземпляр строки с верхнего регистра, нижнего регистра и числа соответственно.
В строке меню выберите Build, Build Solution. Проект должен скомпилироваться без ошибок.
Теперь, чтобы использовать эту библиотеку классов, нам нужно добавить ссылку на эту библиотеку классов в наш консольный проект.
Библиотека классов, UtilityLibrary.StringLib , содержит некоторые методы, такие как, StartsWithUpper , StartsWithLower и StartsWithNumber, которые возвращают логическое значение, которое указывает, начинается ли текущий экземпляр строки с верхнего регистра, нижнего регистра и числа соответственно.
В строке меню выберите Build, Build Solution. Проект должен скомпилироваться без ошибок.
Теперь, чтобы использовать эту библиотеку классов, нам нужно добавить ссылку на эту библиотеку классов в наш консольный проект.
Для этого разверните FirstApp, щелкните правой кнопкой мыши на References и выберите Add Reference…
Теперь давайте откроем файл Program.cs консольного проекта и заменим весь код следующим кодом.
Давайте теперь запустим ваше приложение, и вы увидите следующий результат.
Для лучшего понимания позвольте нам использовать другие методы расширения вашей библиотеки классов в вашем проекте.
Для тех, кто пропустил: Создание своих библиотек в Visual Studio для DirectumRX (DLL для начинающих - часть 1). На этот раз мы попробуем создать небольшой проект с использованием Windows Forms.
Без лишних слов и вступлений.
Поехали!
Открываем Visual Studio и создаем новый проект.
У меня проект будет называться TestWindowsForms.
На этот раз структура проекта несколько отличается от библиотеки классов, а точнее у нас появились
- класс формы Form1,
- конструктор формы Form1.Designer.cs,
- метод-конструктор класса Form1(),
- методы Dispose(bool), InitializeComponent().
Подробнее по структуре приложения можно почитать например на сайте metanit в разделе - "Работа с формами".
Пишем приложение
Не будем ходить вокруг да около, давайте уже что-нибудь напишем, пусть это будет простенький ProgressBar.
Открываем "Панель элементов" -> "Все формы Windows Forms", ищем компонент ProgressBar и перетаскиваем его на форму.
Также нам понадобится кнопка, ну и дополнительно можно привести имена формы, progress и остального к более или менее читаемым. У меня получилось как-то так:
Переходим в класс ProgressForm() и напишем небольшую инициализацию, где зададим начальные значения progressBar, а также создадим переменную для отслеживания нажатия кнопки Stop:
Далее добавим код на нажатие кнопки Stop, а также функцию, которая будет возвращать нам результат нажатия этой кнопки:
Также напишем функцию NextStep(), чтобы двигать наш progress вперед:
Итак, что-то уже получилось, осталось только собрать.
Открываем свойства проекта и указываем "Тип выходных данных" = Библиотека классов и собираем решение.
Чтобы в DirectumRX стали доступны подписи функций, как на картинке ниже,
в разделе "Сборка" необходимо поставить галочку "XML-файл документации" и в дальнейшем подгрузить собранную XML к DLL в сторонних библиотеках.
Все собираем, готовый результат — это 3 файла (если поставили галочку XML): dll, pdb и xml.
DirectumRX
Переносим файлы на сервер с DirectumRX и подключим к тестовому модулю. Поскольку в нашей DLL мы работаем с System.Windows.Forms, нам понадобятся 2 файла:
- System.Windows.Forms.dll,
- System.Windows.Forms.xml.
Обратите внимание на область действия библиотек.
Т.к. System.Windows.Forms это не Web библиотека, да и наша сборка тоже к Web-у никакого отношения не имеет, доступность сборки нужно ограничить, только Desktop-клиентом.
На обложке модуля я создал простое действие с функцией, которое будет получать progressBar и в цикле его сдвигать (не забудьте подключить System.Windows.Forms):
Запускаем и смотрим, что получилось:
Самая простая версия ProgressBar готова!
Можно в VS добавить функции по настройке progressBar:
А можно просто получить progressBar в DirectumRX и настроить его там, что, на мой взгляд, несколько удобнее:
Можно добавить Label и писать дополнительную информацию туда или подключить другой стиль окна и компонент и т.п.
На текущий момент Desktop-клиент DirectumRX уходит на задний план, т.к. приоритет развития это Web-клиент, НО.
Читайте также: