В Visual Studio НЕ передаются Keys `project.Variables.Keys`

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 315
Благодарностей
869
Баллы
113

ZSharp

Client
Регистрация
29.09.2013
Сообщения
396
Благодарностей
126
Баллы
43
Похоже Вы плохо прочитали статью и не поняли главного смысла который там закладывался. А 5 строчек кода это пример, там может быть и 1000 строк кода.
Ещё раз говорю, это уже не первый мой раз, когда я хочу отладку в VS.
Пока в проекте нет браузера, мне это вообще в голову не приходит, а когда появляется, думаю вот бы отдебажить его нормально.

Статью я на всякий читал, вдруг я что-то делаю неправильно.
В статье ровно то, что есть в документации. Ничего нового.

Хорошо не 5 строк, 1000 строк - этот способ дрочильня какая-то.
Как на счёт ООП?
Как на счёт переиспользования кода?
Как насчёт проверки существования переменной? Собственно самой темы этой ветки.

Я уже больше полугода пишу код для проектов ZP только через VS и кайфую на сколько проще писать и дебажить код :-)
То что у вас в статье это не подход C# это скрипты.
А C# это как минимум ООП.


И что тут неожиданного, кроме того как тупо это все реализовано?:D
Это не реализация - это минимальный пример.


Можно, но их надо будет прокидывать, а если работаем в VS через метод Execute они уже прокинуты и мы можем к ним без проблем обращаться
Очень хочу посмотреть на эту реализацию, если это не шутка.
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 302
Благодарностей
702
Баллы
113
Ещё раз говорю, это уже не первый мой раз, когда я хочу отладку в VS.
Пока в проекте нет браузера, мне это вообще в голову не приходит, а когда появляется, думаю вот бы отдебажить его нормально.

Статью я на всякий читал, вдруг я что-то делаю неправильно.
В статье ровно то, что есть в документации. Ничего нового.

Хорошо не 5 строк, 1000 строк - этот способ дрочильня какая-то.
Как на счёт ООП?
Как на счёт переиспользования кода?
Как насчёт проверки существования переменной? Собственно самой темы этой ветки.


То что у вас в статье это не подход C# это скрипты.
А C# это как минимум ООП.



Это не реализация - это минимальный пример.



Очень хочу посмотреть на эту реализацию, если это не шутка.
Вот вам проект который у меня сделан в одном vs кубике, использовал ООП на столько на сколько я его понимаю

Точка входа в Program.cs соответственно
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
Вы же в курсе что в солюшене можно сколько угодно классов насоздавать понаписать в них сколько угодно методов и кода с использованием проджекта и инстанса и при этом из метода экзекьют при создании экземпляра класса передать в конструктор и проджект и инстанс и уже в своем самопальном классе и самопальных методах пользоваться и инстанслм и проджектом ?
Конечно можно, я не спорю. Просто в ZP есть куча крутых методов которые не нужно писать их нужно просто использовать, а для этого удобней будет запустить VS и ZP, в VS через метод Execute написать код (где уже прокинут project \ instance и работает куча методов ZP), а потом просто взять и вставить этот код в кубик C# и у нас будет сразу готовый кубик
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 302
Благодарностей
702
Баллы
113
Конечно можно, я не спорю. Просто в ZP есть куча крутых методов которые не нужно писать их нужно просто использовать, а для этого удобней будет запустить VS и ZP, в VS через метод Execute написать код (где уже прокинут project \ instance и работает куча методов ZP), а потом просто взять и вставить этот код в кубик C# и у нас будет сразу готовый кубик
Проект гляньте что я скинул, и поймёте что у вас бред в статье, так же там гора использований методов зенки
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
Ещё раз говорю, это уже не первый мой раз, когда я хочу отладку в VS.
Пока в проекте нет браузера, мне это вообще в голову не приходит, а когда появляется, думаю вот бы отдебажить его нормально.
Есть предложение, когда у вас встанет вопрос с дебагом можем созваниться, я Вам покажу и расскажу как я работаю, думаю после этого у вас не будет проблем с VS:-)

Очень хочу посмотреть на эту реализацию, если это не шутка.
Вот пожалуйста
C#:
public class Handler
{
    private ZennoLab.InterfacesLibrary.ProjectModel.IZennoPosterProjectModel _project;
    private ZennoLab.CommandCenter.Instance _instance;

    public Handler(ZennoLab.InterfacesLibrary.ProjectModel.IZennoPosterProjectModel project, ZennoLab.CommandCenter.Instance instance)
    {
        _project = project;
        _instance = instance;
    }

    public void Foo()
    {
        _project.SendInfoToLog("Ура могу обращаться к project");
        _instance.GetProxy();
    }
}
 
Последнее редактирование:

ZSharp

Client
Регистрация
29.09.2013
Сообщения
396
Благодарностей
126
Баллы
43
А что код выводит? С телефона скомпилировать не получается ...
103540

Это ошибка в PM.
Кстати в ZennoPoster шаблон отрабатывает, взяв значение по-умолчанию из плагина, так как в плагине есть такая переменная ))


И что тут неожиданного, кроме того как тупо это все реализовано?:D
Это очевидная ошибка о несуществовании переменной?



Вот вам проект который у меня сделан в одном vs кубике, использовал ООП на столько на сколько я его понимаю
Это похоже на нормальный проект. Спасибо! Обязательно полистаю ;-)
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93

ZSharp

Client
Регистрация
29.09.2013
Сообщения
396
Благодарностей
126
Баллы
43
Это же однопоточный проект :ap:

Можно, но их надо будет прокидывать, а если работаем в VS через метод Execute они уже прокинуты и мы можем к ним без проблем обращаться
Вопрос был именно о реальных объектах зенки, а не о аргументах методов.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
Вот пожалуйста
C#:
public class Handler
{
    private static ZennoLab.InterfacesLibrary.ProjectModel.IZennoPosterProjectModel _project;
    private static ZennoLab.CommandCenter.Instance _instance;

    public Handler(ZennoLab.InterfacesLibrary.ProjectModel.IZennoPosterProjectModel project, ZennoLab.CommandCenter.Instance instance)
    {
        _project = project;
        _instance = instance;
    }

    public void Foo()
    {
        _project.SendInfoToLog("Ура могу обращаться к project");
        _instance.GetProxy();
    }
}
static ? :bk:
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 302
Благодарностей
702
Баллы
113

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
Вот вам проект который у меня сделан в одном vs кубике, использовал ООП на столько на сколько я его понимаю

Точка входа в Program.cs соответственно
Спасибо за проект, обязательно разберусь, как раз стоит задачка по работе с Yandex
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 302
Благодарностей
702
Баллы
113
Спасибо за проект, обязательно разберусь, как раз стоит задачка по работе с Yandex
Там единственное вход в прогу немного дибильный, т.к проект не обновлял давно, в методе экзекью там должна быть конструкция кейс, которая в зависимости от режима работы установленного в зенке будет вызывать требуемый метод, методы запуска программы находятся в классе StartMethod так что изучение имеет смысл начать с этого класса, так же это проект сделан под мобильный браузер
 
  • Спасибо
Реакции: Dmitriy Ka

ZSharp

Client
Регистрация
29.09.2013
Сообщения
396
Благодарностей
126
Баллы
43
Вот вам проект который у меня сделан в одном vs кубике, использовал ООП на столько на сколько я его понимаю
Ещё чуть полистал.
Имена адекватные.
Читается хорошо.
Проект отличный!

Шаблон нужно было в конкурс выкладывать!
Ну или пока не поздно, закрыть, и выложить в конкурс ))

У меня пара вопросов к вашему подходу написания кода.
На каждое действие отдельный класс для чего?
Ну допустим есть класс YandexNavigate и YandexWalk.
Я делаю класс допустим YandexReg а у него методы Navigete и Walk.
В чём преимущество такого подхода?
 

ZSharp

Client
Регистрация
29.09.2013
Сообщения
396
Благодарностей
126
Баллы
43

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 302
Благодарностей
702
Баллы
113
Ещё чуть полистал.
Имена адекватные.
Читается хорошо.
Проект отличный!

Шаблон нужно было в конкурс выкладывать!
Ну или пока не поздно, закрыть, и выложить в конкурс ))

У меня пара вопросов к вашему подходу написания кода.
На каждое действие отдельный класс для чего?
Ну допустим есть класс YandexNavigate и YandexWalk.
Я делаю класс допустим YandexReg а у него методы Navigete и Walk.
В чём преимущество такого подхода?
В конкурс его не стал выкладывать да и вообще продавать, потому что слишком большой проект на одного человека, я только Яндексбродилку доделал, начал делать регистратор, Яндекс выкатил обнову, бробилка сдохла, начал ее поднимать, поднял, Яндекс обновил интерфейс, сломался регистратор, и так по кругу, жопа сгорела и бросил этот проект.

По поводу навигейта и волка, в навигейте содержатся методы для работы в самом поисковике, это выбор в какую карточку переходить, закрытие вкладок, закрытие рекламы всякой, крч всякие сопутствующие методы, а в классе волк уже идёт непосредственное брожение по Яндексу с использованием методов из класса навигейт, там где это требуется, грубо говоря класс навигейт это склад с инструментами, а волк это огород где Я копаюсь и уже использую эти инструменты по мере надобности. Так же я на тот момент читал книгу про чистый код и старался не нагромождать методы большим количеством кода, так же не нагромождать классы большим количеством методов. При этом это мой самый первый проект, я тогда только кодинг начинал и осваивать ООП и разбивал проект на объекты таким образом как мне на тот момент казалось правильным, сейчас возможно бы по другому сделал.
 
  • Спасибо
Реакции: ZSharp

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 302
Благодарностей
702
Баллы
113
Ещё чуть полистал.
Имена адекватные.
Читается хорошо.
Проект отличный!

Шаблон нужно было в конкурс выкладывать!
Ну или пока не поздно, закрыть, и выложить в конкурс ))

У меня пара вопросов к вашему подходу написания кода.
На каждое действие отдельный класс для чего?
Ну допустим есть класс YandexNavigate и YandexWalk.
Я делаю класс допустим YandexReg а у него методы Navigete и Walk.
В чём преимущество такого подхода?
А за оценку спасибо, приятно, т.к я самоучка и код никому не показывал
 
  • Спасибо
Реакции: ZSharp

ZSharp

Client
Регистрация
29.09.2013
Сообщения
396
Благодарностей
126
Баллы
43
А за оценку спасибо, приятно, т.к я самоучка и код никому не показывал
;-)
Сам самоучка, и первые проекты у меня гораздо хуже были.

Кубиками надоело писать одно и то же:

Получить первую строку из файла.
Проверить её на null.
Удалить первую.
Вставить её в конец.
И таких конструкций по проекту десяток.
А плагинов ещё не было.

Решил себе сделать библиотеку хелпер.
Классы в которых берём строку из файла с проверками и т.д. и это конечно всё на статике.
Работу с таблицами я себе реализовывал не список/массив объектов, а DataTable, там же Table в названии было, и по сути работал с ней как с Excel файлом ))
Так же удаление дублей в файле реализовывал, а потом обнаружил для себя LINQ и посмотрел сколько я работы бестолковой наделал :D
Ну было весело, ООП пришёл позже :D
 
  • Спасибо
Реакции: Sherminator

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 315
Благодарностей
869
Баллы
113
Давайте попробую расписать что там в архиве. Будет понятнее.
Имеем плагин, в котором есть входные настройки c текстовым полем которые попадают в переменную TestVar.
103543
Так же там есть два кубика:
1. Кубик оповещения с содержимым "Вывод кубиком: {-Variable.TestVar-}"
2. Кубик это проект VS с содержимым, которое должно быть аналогично кубику 1 с немного другим текстом.
C#:
public int Execute(Instance instance, IZennoPosterProjectModel project)
        {
            int executionResult = 0;
            project.SendInfoToLog($"Вывод из vs proj: {project.Variables["TestVar"].Value}", true);
            return executionResult;
        }
Сохраняем проект как плагин и добавляем в чистый шаблон. Назовем его Main.
В настройках плагина указываем текст который хотим передать в плагин. Здесь мы укажем "Это мы передаем в плагин из main". Никаких переменных мы не создаем, тк они нам не нужны. Мы просто хотим передать плагину какой-то текст.
103545
Вопрос: Что произойдет если запустить main?
Ожидание: Текст переданный во входные настройки попадет в переменную TestVar в палагине.
1.Далее кубик оповещения выведет сообщение "Вывод кубиком: Это мы передаем в плагин из main".
2.Кубик с кодом выведет "Вывод из vs proj: Это мы передаем в плагин из main".
Но получаем мы такое:
103549
Кубик оповещения вывел значение из переменной TestVar.
Кубик с кодом стал искать переменную TestVar в проекте, из которого вызван кубик.

Окей, создадим второй проект Main2. В отличии от main мы создадим в нем переменную TestVar и внесем туда значение "Это значение переменной TestVar в Main2". В входных настройках мы указываем "Это мы передаем в плагин из main2"
103550

Ожидание: Текст переданный во входные настройки попадет в переменную TestVar в палагине.
1.Далее кубик оповещения выведет сообщение "Вывод кубиком: Это мы передаем в плагин из main2".
2.Кубик с кодом выведет "Вывод из vs proj: Это мы передаем в плагин из main2".

Запускаем...иииии....
103551
Кубик оповещения вывел значение из переменной TestVar. "Вывод кубиком: Это мы передаем в плагин из main2 "
Кубик с кодом вывел значение из переменной TestVar ИЗ ШАБЛОНА КОТОРЫЙ ВЫЗЫВАЛ ПЛАГИН. "Это значение переменной TestVar в Main2"

Что мы получаем в итоге - Плагин + проект vs = нерабочее решение. Тк плагин прямо завязан на входных настройках. И я хз как дела обстоят с шифрованными проектами. Ибо уперевшись в такого рода косяки, я понял что нефиг даже связываться.

но то что ошибки выдали результат который я ожидал, говорит о том что я правильно думаю
Тоесть, по твоей логике надо создавать передаваемые переменные в основном проекте?)
Как тогда быть с подобными плагинами? https://skr.sh/vIVgrMJUTnn?a Сколько надо создать переменных?) А какая документация должны быть к таким плагинам?)
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 302
Благодарностей
702
Баллы
113
Давайте попробую расписать что там в архиве. Будет понятнее.
Имеем плагин, в котором есть входные настройки c текстовым полем которые попадают в переменную TestVar.
Так же там есть два кубика:
1. Кубик оповещения с содержимым "Вывод кубиком: {-Variable.TestVar-}"
2. Кубик это проект VS с содержимым, которое должно быть аналогично кубику 1 с немного другим текстом.
C#:
public int Execute(Instance instance, IZennoPosterProjectModel project)
        {
            int executionResult = 0;
            project.SendInfoToLog($"Вывод из vs proj: {project.Variables["TestVar"].Value}", true);
            return executionResult;
        }
Сохраняем проект как плагин и добавляем в чистый шаблон. Назовем его Main.
В настройках плагина указываем текст который хотим передать в плагин. Здесь мы укажем "Это мы передаем в плагин из main". Никаких переменных мы не создаем, тк они нам не нужны. Мы просто хотим передать плагину какой-то текст.
Вопрос: Что произойдет если запустить main?
Ожидание: Текст переданный во входные настройки попадет в переменную TestVar в палагине.
1.Далее кубик оповещения выведет сообщение "Вывод кубиком: Это мы передаем в плагин из main".
2.Кубик с кодом выведет "Вывод из vs proj: Это мы передаем в плагин из main".
Но получаем мы такое:
Кубик оповещения вывел значение из переменной TestVar.
Кубик с кодом стал искать переменную TestVar в проекте, из которого вызван кубик.

Окей, создадим второй проект Main2. В отличии от main мы создадим в нем переменную TestVar и внесем туда значение "Это значение переменной TestVar в Main2". В входных настройках мы указываем "Это мы передаем в плагин из main2"

Ожидание: Текст переданный во входные настройки попадет в переменную TestVar в палагине.
1.Далее кубик оповещения выведет сообщение "Вывод кубиком: Это мы передаем в плагин из main2".
2.Кубик с кодом выведет "Вывод из vs proj: Это мы передаем в плагин из main2".

Запускаем...иииии....
Кубик оповещения вывел значение из переменной TestVar. "Вывод кубиком: Это мы передаем в плагин из main2 "
Кубик с кодом вывел значение из переменной TestVar ИЗ ШАБЛОНА КОТОРЫЙ ВЫЗЫВАЛ ПЛАГИН. "Это значение переменной TestVar в Main2"

Что мы получаем в итоге - Плагин + проект vs = нерабочее решение. Тк плагин прямо завязан на входных настройках. И я хз как дела обстоят с шифрованными проектами. Ибо уперевшись в такого рода косяки, я понял что нефиг даже связываться.


Тоесть, по твоей логике надо создавать передаваемые переменные в основном проекте?)
Как тогда быть с подобными плагинами? https://skr.sh/vIVgrMJUTnn?a Сколько надо создать переменных?) А какая документация должны быть к таким плагинам?)
Всё правильно, в ПМ ничего не работает, потому что он ищет эту переменную в проекте на котором у тебя вкладка, а вот в зенке все норм
103553
 
  • Спасибо
Реакции: Dr.Pipetka

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 315
Благодарностей
869
Баллы
113
Всё правильно, в ПМ ничего не работает, потому что он ищет эту переменную в проекте на котором у тебя вкладка, а вот в зенке все норм
Посмотреть вложение 103553
Ну да, в зенке уже норм. До этого не проверял. Но толку без дебага в ПМ все равно нет:-) Может заметят и пофиксят.... Конечно же никто не будет это фиксить
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 302
Благодарностей
702
Баллы
113
Ну да, в зенке уже норм. До этого не проверял. Но толку без дебага в ПМ все равно нет:-) Может заметят и пофиксят.... Конечно же никто не будет это фиксить
В моём понимание, если ты работаешь в студии, можешь в полной мере использовать ООП, какие нафиг плагины? зачем козе баян? Щас вообще первый раз плагины использовал, даже разбираться пришлось, но так и не понял зачем эти сложности. А в пм у них да, немного тупо сделано, у тебя типа если несколько проектов там открыто, и к примеру запущено решение из какого то одного проекта, то при запуске отладки в студии он будет обращаться к тому проекту, вкладка с которым у тебя выбрана в данный момент
 

ZSharp

Client
Регистрация
29.09.2013
Сообщения
396
Благодарностей
126
Баллы
43
Как костыль в плагине можно переменные называть Плагин__Переменная1, Плагин__Переменная2
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 315
Благодарностей
869
Баллы
113
В моём понимание, если ты работаешь в студии, можешь в полной мере использовать ООП, какие нафиг плагины? зачем козе баян? Щас вообще первый раз плагины использовал, даже разбираться пришлось, но так и не понял зачем эти сложности
Для продажи в основном. Для себя держу ДЛЛку со всем удобншками которые могут пригодится.
Плагин это в принципе визуальная обертка своих методов, иногда очень удобно. Вот например регер тикток для мобилки пару лет назад писал. Почти полностью одним плагином написан.
103554

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

А проекты через студию со всех фронтов идут в топку... Зависимости свои хер подключишь, юзай те что постер использует, перекомпилить что то - надо вырубать постер для замены длл. Дико неудобно.
Короче постер удобен защитой из коробки для продажи проектов и для "быстро накидать" проектик.
Ждем восьмерку, надеюсь там все будет для людей8-)
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 302
Благодарностей
702
Баллы
113
Для продажи в основном. Для себя держу ДЛЛку со всем удобншками которые могут пригодится.
Плагин это в принципе визуальная обертка своих методов, иногда очень удобно. Вот например регер тикток для мобилки пару лет назад писал. Почти полностью одним плагином написан.

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

А проекты через студию со всех фронтов идут в топку... Зависимости свои хер подключишь, юзай те что постер использует, перекомпилить что то - надо вырубать постер для замены длл. Дико неудобно.
Короче постер удобен защитой из коробки для продажи проектов и для "быстро накидать" проектик.
Ждем восьмерку, надеюсь там все будет для людей8-)
Так то же самое, у меня так же есть готовые классы с методами свои, которые я просто в проект подкидываю, в студии это всё в разы удобнее, дебаг в студии лучше, точки останова в ПМ использовать ад какой-то,
да и ладно регер для тока, а если бота делать серьезного? это же сколько кубиков будет, как в этом ориентироваться? Крч вкусовщина
 
  • Спасибо
Реакции: Dmitriy Ka

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 315
Благодарностей
869
Баллы
113
Так то же самое, у меня так же есть готовые классы с методами свои, которые я просто в проект подкидываю, в студии это всё в разы удобнее, дебаг в студии лучше, точки останова в ПМ использовать ад какой-то,
да и ладно регер для тока, а если бота делать серьезного? это же сколько кубиков будет, как в этом ориентироваться? Крч вкусовщина
Я немного про другой дебаг:-)
Добавил кубик кнопки далее, вставил xpath и нажал кубик - ага, все ок. Жмем в приле стрелочку назад, вводим кривой логин что бы кнопочка была неактивна и проверяем еще раз. Опять нажалась кнопка - значит правим xpath. В коде для таких манипуляций надо всякие метки юзать, куски кода комментировать и тд. А кубики для первичного дебага. Я хз как донести мысль точнее:-) Но 90% я и пишу кодом, только вот приходится все в одном файле писать что бы подключить в зенку можно было....
 

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