- Регистрация
- 29.07.2015
- Сообщения
- 148
- Благодарностей
- 291
- Баллы
- 63
Немногие знают, что можно писать и отлаживать шаблоны в VisualStudio в связке с Code Creator. Для тех, кто работал в VS, думаю не стоит объяснять почему это в разы удобнее, чем использование только лишь ProjectMaker или CodeCreator. Ранее я нигде не видел этот способ и сам наткнулся на него случайно.
Итак, разберем пошагово что нам нужно сделать, чтобы запускать проекты в VS.
Создание проекта
Запускаем CodeCreator и создаем новый C# проект:
Затем делаем экспорт проекта:
Code Creator сгенерирует все необходимые файлы проекта Visual Studio.
Открываем экспортированный проект в Visual Studio.
Структура проекта
У проекта будет следующая структура:
В файле Program.cs находится одноименный сгенерированный класс с тремя методами:
Каждый из методов принимает в параметрах объект Instance и IZennoPosterProjectModel, таким образом мы можем обращаться к project и instance также, как и в Project Maker.
Как Visual Studio связывается с CodeCreator?
Если вы зайдете в свойства проекта и перейдете на вкладку «Отладка», то увидите примерно следующее:
При запуске проекта происходит запуск внешней программы ZennoLab.CodeRunner.exe, которой передается набор аргументов, среди которых и путь к DLL файлу библиотеки, в который компилируется проект. При запуске проекта, библиотека копируется из указанного месторасположения в папку ExternalAssemblies, после чего CodeCreator подключает ее, находит класс Program и запускает на выполнение.
Настройка проекта
Проект уже готов к выполнению, однако есть некоторые недостатки при текущих настройках.
Отладка проекта в Visual Studio
Проект готов к отладке, чтобы его запустить, убедитесь, что выполнены условия:
Теперь, поместите внутрь метода ExecuteCode свою логику и запустите проект. Во время выполнения произойдет подключение к инстансу и шаблон выполниться.
Дальнейшая отладка в Visual Studio ничем отличается от работы с любым другим проектом.
Продакшн
Теперь, чтобы подготовить проект к распространению, нам все же потребуется открыть ProjectMaker. Нужно создать шаблон и подключить в него dll файлы, которые у нас в итоге получились в процессе разработки в VS. После подключения достаточно добавить C# сниппет и вызвать из нашего проекта метод Program.ExecuteCode(), передав ему соответствующие экземпляры инстанса и проджекта.
Если вы хотите зашифровать ваш шаблон, простое подключение библиотек не подойдет (т.к. их исходный код легко посмотреть воспользовавшись любым декомпилятором), нужно зашифровать и их. На помощь приходит решение от разработчиков ZennoLab: не так давно в одном из обновлений была добавлена такая возможность: зашифровать зависимые библиотеки и упаковать их в шаблон.
Также рекомендую ознакомиться с моей конкурсной статьей о нестандартных фишках в разработке шаблонов.
Итак, разберем пошагово что нам нужно сделать, чтобы запускать проекты в VS.
Создание проекта
Запускаем CodeCreator и создаем новый C# проект:
Затем делаем экспорт проекта:
Code Creator сгенерирует все необходимые файлы проекта Visual Studio.
Открываем экспортированный проект в Visual Studio.
Структура проекта
У проекта будет следующая структура:
В файле Program.cs находится одноименный сгенерированный класс с тремя методами:
- GoodEnd
- BadEnd
- ExecuteCode
Каждый из методов принимает в параметрах объект Instance и IZennoPosterProjectModel, таким образом мы можем обращаться к project и instance также, как и в Project Maker.
Как Visual Studio связывается с CodeCreator?
Если вы зайдете в свойства проекта и перейдете на вкладку «Отладка», то увидите примерно следующее:
При запуске проекта происходит запуск внешней программы ZennoLab.CodeRunner.exe, которой передается набор аргументов, среди которых и путь к DLL файлу библиотеки, в который компилируется проект. При запуске проекта, библиотека копируется из указанного месторасположения в папку ExternalAssemblies, после чего CodeCreator подключает ее, находит класс Program и запускает на выполнение.
Настройка проекта
Проект уже готов к выполнению, однако есть некоторые недостатки при текущих настройках.
Проблемы
Если вы захотите разбить проект на отдельные сборки (например, чтобы отделить логику работы с базой данных), то в этом случае вам потребуется вручную скопировать дополнительные библиотеки в папку ExternalAssemblies. Если этого не делать, проект не запустится, т.к. CodeRunner’у передается только путь к основному DLL файлу проекта и об остальных файлах он ничего не знает.
Но если даже скопировать все файлы, в будущем возникнет необходимость внести изменения в проект какого-либо доп. модуля. И тут снова придется копировать вручную, о чем можно случайно забыть и долго гадать почему же не работает новая логика.
Следующий недостаток, аналогичный предыдущему, заключается в использовании сторонних сборок, например, с NuGet’а. Однажды вы обновите какой-либо из пакетов и забудете скопировать его файл в ExternalAssemblies.
И последний недостаток – если переместить файлы проекта в новое расположение, придется лезть в настройки проекта и указывать новый путь.
Решение
Чтобы избежать подобных проблем достаточно сделать автоматическое размещение всех сборок в ExternalAssemblies перед каждым запуском проекта Visual Studio.
1. Для этого зайдите в свойства проекта, перейдите на вкладку «Сборка» и укажите в качестве выходного пути путь к папке ExternalAssemblies:
2. На вкладке «Отладка» в аргументах командной строки также измените путь на путь к ExternalAssemblies:
Если вы захотите разбить проект на отдельные сборки (например, чтобы отделить логику работы с базой данных), то в этом случае вам потребуется вручную скопировать дополнительные библиотеки в папку ExternalAssemblies. Если этого не делать, проект не запустится, т.к. CodeRunner’у передается только путь к основному DLL файлу проекта и об остальных файлах он ничего не знает.
Но если даже скопировать все файлы, в будущем возникнет необходимость внести изменения в проект какого-либо доп. модуля. И тут снова придется копировать вручную, о чем можно случайно забыть и долго гадать почему же не работает новая логика.
Следующий недостаток, аналогичный предыдущему, заключается в использовании сторонних сборок, например, с NuGet’а. Однажды вы обновите какой-либо из пакетов и забудете скопировать его файл в ExternalAssemblies.
И последний недостаток – если переместить файлы проекта в новое расположение, придется лезть в настройки проекта и указывать новый путь.
Решение
Чтобы избежать подобных проблем достаточно сделать автоматическое размещение всех сборок в ExternalAssemblies перед каждым запуском проекта Visual Studio.
1. Для этого зайдите в свойства проекта, перейдите на вкладку «Сборка» и укажите в качестве выходного пути путь к папке ExternalAssemblies:
2. На вкладке «Отладка» в аргументах командной строки также измените путь на путь к ExternalAssemblies:
Отладка проекта в Visual Studio
Проект готов к отладке, чтобы его запустить, убедитесь, что выполнены условия:
- CodeCreator должен быть запущен
- В CodeCreator должен быть открыт какой-нибудь проект, например, темповый проект, который мы создавали в самом начале. Если никакой проект не открыт, запустить выполнение из VisualStudio не получится. Поэтому для удобства можно сохранить тот проект и открывать, когда потребуется.
- Проект в CodeCreator должен быть остановлен. Это частая проблема при отладке из Visual Studio – иногда приходится прекращать отладку, нажав в Visual Studio кнопку стоп. Однако при такой остановке CodeCreator продолжает выполнение проекта и нужно вручную останавливать также и проект в CodeCreator.
Теперь, поместите внутрь метода ExecuteCode свою логику и запустите проект. Во время выполнения произойдет подключение к инстансу и шаблон выполниться.
Дальнейшая отладка в Visual Studio ничем отличается от работы с любым другим проектом.
Продакшн
Теперь, чтобы подготовить проект к распространению, нам все же потребуется открыть ProjectMaker. Нужно создать шаблон и подключить в него dll файлы, которые у нас в итоге получились в процессе разработки в VS. После подключения достаточно добавить C# сниппет и вызвать из нашего проекта метод Program.ExecuteCode(), передав ему соответствующие экземпляры инстанса и проджекта.
Если вы хотите зашифровать ваш шаблон, простое подключение библиотек не подойдет (т.к. их исходный код легко посмотреть воспользовавшись любым декомпилятором), нужно зашифровать и их. На помощь приходит решение от разработчиков ZennoLab: не так давно в одном из обновлений была добавлена такая возможность: зашифровать зависимые библиотеки и упаковать их в шаблон.
Также рекомендую ознакомиться с моей конкурсной статьей о нестандартных фишках в разработке шаблонов.
- Категория
- Полезно
Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.
Последнее редактирование: