Всем привет! Сегодня расскажу про другой способ отладки плагинов для Revit: без перезагрузки приложения и без ручного переноса файлов. Поехали!
Начало
Для начала создадим плагин для Revit (любой, какой хотите), согласно инструкции по ссылке ниже, но подключать к Ревиту его не будем.
У вас должен быть плагин и addin-файл в решении, после чего можно модифицировать проект.
Нажимаем правой кнопкой мыши на проект в Обозревателе решений (не на Решение) и жмём Свойства. Нас кидает вот в это окно:
Выберем пункт меню Отладка. В группе "Действия при сборке" выберем "Запуск внешней программы" и дадим ссылку на нашу версию Ревита. У меня это будет Ревит 2024: C:\Program Files\Autodesk\Revit 2024\Revit.exe
Далее переходим чуть выше во вкладку "События сборки". В "Командная строка событий после сборки" напишем текст:
Вот такой текст:
echo configuration: $(Configuration)
if not exist "$(AppData)\Autodesk\Revit\Addins\2024\MyRevitCommand" mkdir "$(Appdata)\Autodesk\Revit\Addins\2022\MyRevitCommand" /q/y
xcopy "$(TargetDir)*.dll" "$(AppData)\Autodesk\Revit\Addins\2024\MyRevitCommand" /q/y
xcopy "$(TargetDir)*.addin" "$(AppData)\Autodesk\Revit\Addins\2024\" /q/y
Не копипастим с ходу, читаем описание!
Что тут написано:
- В папке для addin'-ов мы создаём подпапку с именем MyRevitCommand (это имя решения, у вас оно будет другим, соответственно). Год Ревита у вас тоже будет свой, будьте внимательны.
- Затем все dll мы переносим в эту созданную папку.
- /q/y — это параметры для "тихого" переноса без лишних вопросов в консоли.
Вот тут можно подробнее почитать про xcopy и возможно изменить что-нибудь, если у вас не сработает.
Запуск
Запускаем проект в режиме отладки вот этой кнопкой:
У нас запустится Revit, и, если мы всё сделали правильно, перенесутся файлы и подключится наш плагин. Мы можем поставить точку останова в коде плагина, и при выполнении код зайдёт в неё.
Да, очень удобно, что не надо переносить файлы. Но ведь с addin-менеджером гораздо удобнее, ведь не надо запускать Ревит каждый раз — скажете вы. И будете правы, но только частично. Запускать Ревит каждый раз — необязательно.
Горячая перезагрузка
Visual Studio поддерживает горячую перезагрузку во время отладки. Она может не всегда хорошо работать, может не работать для xaml-файлов, но в большистве случаев она вполне себе хорошо работает.
Горячая перезагрузка — это изменение кода в режиме отладки на ходу без перезапуска отладки. Можно прямо поставить точку останова и внутри цикла менять код: следующая итерация пойдёт по другому пути.
Но нужно немного поменять настройки. Останавливаем отладку (Ревит закроется) и идём в настройки (Средства — Параметры).
Тут ставим все галочки:
Далее перезапускаем плагин и выполняем команду. Потом вносим изменение в команду и сохраняем файл (Ctrl-S). Перезапускаем команду и видим, что код пошёл по новому пути без перезапуска Ревита. Горячая перезагрузка настроена!
На этом у меня для вас всё. Сегодня без кода на гитхабе, как обычно, но всё же довольно важная тема. Напоминаю про свой телеграм-канал о Revit API, обязательно подписывайтесь на него. До новых встреч!