Создание своих библиотек в Visual Studio для DirectumRX (DLL для начинающих - часть 1).

23 4

Вместо предисловия

В данной статье, я постараюсь описать, как создать простую библиотеку, куда идти и что нажимать. 

Для Гуру C# тут откровений не будет, но если им будет чем дополнить данную статью, думаю все будут только рады.

 

Необходимые компоненты

Для создания своей DLL нам потребуется:

- Visual Studio (у меня VS 2017)

- Directum RX Development Studio

- Прямые руки

- Google.ru или Yandex.ru (по вкусу)

 

Начинаем начинать

Открываем Visual Studio и создаем свой новый проект


 

Выбираем "Библиотека классов (.NET Framework)", указываем используемый Framework и заполняем имя проекта. Ждем "Ок".

У меня проект будет называться TestProject.


 

И так, у меня на рабочем столе в папке TEST, появилась папка TestProject.

Внутри папка с проектом (TestProject) и SLN файл.

*.SLN файл - это файл решения, который содержит помимо GUID-ов путь к проекту.

Если будете переименовывать папку с проектом, нужно будет править и путь в файле решения:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestProject", "TestProject\TestProject.csproj", "{CB70FF03-CE24-4191-9A75-C6190CFDFE1F}"

 

В самой папке проекта лежат: *.CSPROJ файл проекта (TestProject.csproj), *.CS файлы классов (у нас пока один Class1.cs), папка Properties (тут лежит файл со сведениями о сборке AssemblyInfo.cs), папка obj с временными файлами и папка bin с результатами компиляции.

Сильно подробно описывать все не буду, в интернете можно более подробнее почитать про структуру проекта и что зачем нужно.


 

В самой же студии все довольно просто: Решение TestProject, в нем проект TestProject, а в нем по умолчанию созданный Class1.


 

 

Пишем а-ля "Hello World"

Давайте для разминки напишем простенькую функцию SummInt(), которая на вход будет принимать 2 числа, суммировать их и возвращать результат.

Попутно я переименовал namespace в MyTestProject (это имя, по которому будет происходить обращение к DLL) и класс в FirstClass.

ВАЖНО: Функция должна иметь модификатор static, иначе в RX мы ее не увидим.

Подробно по уровням доступности и модификаторам можно почитать на MSDN.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyTestProject
{
    public class FirstClass
    {
        public static int SummInt(int a, int b)
        {
            var c = a + b;
            return c;
        }
    }
}

 

В свойствах проекта настраиваем сборку, если это необходимо, сохраняем и собираем проект.

В папке \bin\Debug (путь такой ...\Desktop\TEST\TestProject\TestProject\bin\Debug) появилось 2 файла: наша DLL и файл символов *.PDB (о pdb файлам опять таки можно почитать у Microsoft - Файл символов).

Цитата с stackoverflow: Наличие файлов символов (.pdb) на клиентской машине может быть полезно тем, что в случае возникновения необработанного исключения при наличии .pdb файла можно получить более детальный stack trace.


 

 

А что в DirectumRX!?

Итак, давайте смотреть, что же у нас получилось.

Я создал решение TestDLLSolution, модуль ModuleDLL и справочник Databook, для проверки этого хватит.

Подключаем нашу библиотеку в модуле (см. линк на Directum club).


 

В справочнике Databook создадим кнопку Action и вынесем ее на форму.

Код кнопки такой:

public virtual void Action(Sungero.Domain.Client.ExecuteActionArgs e)
{
    // Отправляем в функцию TestProject.dll и выводим результат сложения в диалог
    var dllResult = MyTestProject.FirstClass.SummInt1(10, 7);
    Dialogs.NotifyMessage(string.Format("Результат сложения 10 + 7 = {0}", dllResult));
}

Обращение к нашей DLL осуществляется по namespace MyTestProject, который мы указали в проекте, далее класс FirstClass и имя функции.

 

Собственно все собираем, публикуем и запускаем.


При нажатии на кнопку получаем результат сложения 2 чисел.

Поздравляю - Вы прокачались до 20 уровня, получили D Grade на крафт своих библиотек, а значит - Mission complete!

 

P.S. Рассмотренный пример это лишь первый маленький шажочек к расширению возможностей C# в DirectumRX, ведь еще есть Windows Forms, APS .Net и т.д. и т.п.

P.P.S. To be continued ...

 

Юрий Леонтьев

Стоит добавить, что если библиотека будет использоваться в серверном коде, то она может быть собрана под framework 4.6.2. Если в клиентском коде - то framework 4.5 (Это информация бывает полезна, например, когда в своем коде используешь другие библиотеки, определённой версии framework).

Дмитрий Панкрашов

Если будет информация про логгирование - стоит добавить заповедь "Не используй NLog" ;)

Сергей Беляков

Дмитрий, А что так ? У меня проблем с NLog пока не возникало. Поделитесь опытом !?

Борис Густяков

Я использую EasyLog - без проблем

Авторизуйтесь, чтобы написать комментарий