Как создать свою dll?

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
Видел как-то в одной из тем сообщение:
по поводу функции, можно сделать свою dll c функциями-хелперами, и потом ее подключить к проекту.
Так вот может ли кто рассказать поконкретнее: как именно это сделать? Сниппеты уже достаточно сложны и наполнены делегатами, и функционал во многих местах пересекается. Созданная универсальная dll-библиотека была бы очень кстати.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
В Visual Studio
 

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
Ну это как раз вполне предсказуемо :-) Если конкретизировать вопрос: чтобы можно было оперировать в создаваемой .dll объектной моделью постера, нужно подключить какую-то dll из папки постера в Visual Studio? или просто вставляем наши процедуры как есть в текст проекта, и при подключении через using к зенке все инструкции будут правильно выполняться? Плюс, вроде как само объявление процедур в нативном C# под Visual Studio несколько отличается... Можете скинуть в качестве примера проект для Visual Studio с любым элементарным кодом под зенку, пусть даже с функцией возврата строки Hello World?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;

эти dll нужно подключить и прописать в юзинг, соответственно
 

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;

эти dll нужно подключить и прописать в юзинг, соответственно
Возможно ещё какие dll нужно подключить? Не получается обратиться к instance.ActiveTab:
 

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
...вопрос снимаю. работает так:
Код:
            ZennoLab.CommandCenter.Instance CurrInstance = new Instance("127.0.0.1", 40500, "server");
            Tab Tab1 = CurrInstance.ActiveTab;
            Tab1.Navigate("http://yandex.ru");
            if (Tab1.IsBusy)
                Tab1.WaitDownloading();
            HtmlElement elTest = Tab1.FindElementByXPath("//h1",0);
            strBlakaParam = parameter;
            return "blaka: " + strBlakaParam + elTest.GetAttribute("InnerHtml");
...при этом при вызове процедуры из .dll нужно передавать ей порт текущего инстанса.

Вызов из проекта Zenno (в моём случае):
Код:
TestLibrary.Blaka objTest = new TestLibrary.Blaka();
return objTest.SayBlaka("what???");
 
  • Спасибо
Реакции: KirillOFF

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
Столкнулся с такой проблемой: создаю dll-ку, подключаю к проекту, всё работает. Затем меняю объектную модель этой .dll, пересобираю и пробую воспользоваться новыми объектами и методами. Так вот Project Maker видит новые свойства и методы и предлагает их использовать при написании сниппета, но при запуске ругается что данных методов и свойств в классе нет и предполагает что я пропустил using. Иду далее: меняю названия классов и методов, которые ранее работали, снова перекомпилирую, удаляю ссылку на библиотеку из проекта и добавляю снова. Итог: прежний синтаксис со старыми названиями свойств по прежнему работает, а по новым именам также обратиться не могу. Почему так? Project maker где-то кэширует используемые библиотеки???

UPD: хм, действительно интересно получается... Вставил ссылку на .dll, находящуюся не в папке программы, при этом постер сам скопировал библиотеку в External Assemblies folder. Затем после каждой перекомпиляции библиотеки удалял её из проекта и добавлял снова, но в External Assemblies при этом оставалась старая версия библиотеки. Таким образом подсказки были по новой объектной модели, но отрабатывала после запуска старая библиотека. Почему так???
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Библиотека попадает в кеш msbuild и блокируется (т.к она уже подключена к ZP или PM).
Подсказки работают т.к. они берутся из новой библиотеки, а вот заменить старую во время работы PM или ZP нельзя, т.к. она уже является частью кода.
В общем только после перезапуска PM или ZP библиотеку можно обновить, с этим к сожалению ничего сделать нельзя, это всё системная вещь.
 

ZAKSEO

Новичок
Регистрация
04.06.2016
Сообщения
11
Благодарностей
1
Баллы
3
вопрос по теме: я создал dll в среде DELPHI и как теперь правильно подключить ее? или разницы нет в какой среде создана сама dll ?
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Все зависит от того, во что конвертируется delphi код. Если в IL, то с легкостью примет, а если в другое, то не должно работать (точно не уверен в этом)
 

ZAKSEO

Новичок
Регистрация
04.06.2016
Сообщения
11
Благодарностей
1
Баллы
3
Все зависит от того, во что конвертируется delphi код. Если в IL, то с легкостью примет, а если в другое, то не должно работать (точно не уверен в этом)
В том то и дело, что никак не хочет принимать dll написанную в дельфях... другие dll скачиваю с инета, без проблем зенка видит... просто первый раз к зенке прикручиваю библиотеки. Вот и не пойму, либо что то не так делаю, потому что для своих программ на дельфях без проблем любую либу подключаю... а вот как скормить ее зенке?? :be:
 

DmitryAk

Client
Регистрация
14.12.2016
Сообщения
860
Благодарностей
824
Баллы
93

ZAKSEO

Новичок
Регистрация
04.06.2016
Сообщения
11
Благодарностей
1
Баллы
3
И соответствует ли архитектуре зенки?
вопрос конечно в тему.... но могу сказать что вероятно нет... Ссуть в том, что в библах у меня реализовано части кода... например: авторизация яндекс. и вертается булево .... Так вот,как мне правильно подключить библу, чтобы я мог использовать свои процедуры и функции библы? И встречный вопрос: где можно глянуть, как на дельфях "соответствовать архитектуре зенке"?
 

DmitryAk

Client
Регистрация
14.12.2016
Сообщения
860
Благодарностей
824
Баллы
93
Тупо и банально под x64 или под 32х битную архитектуру скомпилена либа? Смотреть в свойствах проекта.
Как подключать и использовать в шарпе - в гугл. Надеюсь вы не пытаетесь её как дотнет сборку подключить?)
 

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)