Найти тему

Автоматический перенос файлов и горячая перезагрузка плагина

Всем привет! Сегодня расскажу про другой способ отладки плагинов для Revit: без перезагрузки приложения и без ручного переноса файлов. Поехали!

Начало

Для начала создадим плагин для Revit (любой, какой хотите), согласно инструкции по ссылке ниже, но подключать к Ревиту его не будем.

У вас должен быть плагин и addin-файл в решении, после чего можно модифицировать проект.

Нажимаем правой кнопкой мыши на проект в Обозревателе решений (не на Решение) и жмём Свойства. Нас кидает вот в это окно:

Выберем пункт меню Отладка. В группе "Действия при сборке" выберем "Запуск внешней программы" и дадим ссылку на нашу версию Ревита. У меня это будет Ревит 2024: C:\Program Files\Autodesk\Revit 2024\Revit.exe

-2

Далее переходим чуть выше во вкладку "События сборки". В "Командная строка событий после сборки" напишем текст:

-3

Вот такой текст:

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

Не копипастим с ходу, читаем описание!

Что тут написано:

  1. В папке для addin'-ов мы создаём подпапку с именем MyRevitCommand (это имя решения, у вас оно будет другим, соответственно). Год Ревита у вас тоже будет свой, будьте внимательны.
  2. Затем все dll мы переносим в эту созданную папку.
  3. /q/y — это параметры для "тихого" переноса без лишних вопросов в консоли.

Вот тут можно подробнее почитать про xcopy и возможно изменить что-нибудь, если у вас не сработает.

Запуск

Запускаем проект в режиме отладки вот этой кнопкой:

-4

У нас запустится Revit, и, если мы всё сделали правильно, перенесутся файлы и подключится наш плагин. Мы можем поставить точку останова в коде плагина, и при выполнении код зайдёт в неё.

Да, очень удобно, что не надо переносить файлы. Но ведь с addin-менеджером гораздо удобнее, ведь не надо запускать Ревит каждый раз — скажете вы. И будете правы, но только частично. Запускать Ревит каждый раз — необязательно.

Горячая перезагрузка

Visual Studio поддерживает горячую перезагрузку во время отладки. Она может не всегда хорошо работать, может не работать для xaml-файлов, но в большистве случаев она вполне себе хорошо работает.

Горячая перезагрузка — это изменение кода в режиме отладки на ходу без перезапуска отладки. Можно прямо поставить точку останова и внутри цикла менять код: следующая итерация пойдёт по другому пути.

Но нужно немного поменять настройки. Останавливаем отладку (Ревит закроется) и идём в настройки (Средства Параметры).

Тут ставим все галочки:

-5

Далее перезапускаем плагин и выполняем команду. Потом вносим изменение в команду и сохраняем файл (Ctrl-S). Перезапускаем команду и видим, что код пошёл по новому пути без перезапуска Ревита. Горячая перезагрузка настроена!

На этом у меня для вас всё. Сегодня без кода на гитхабе, как обычно, но всё же довольно важная тема. Напоминаю про свой телеграм-канал о Revit API, обязательно подписывайтесь на него. До новых встреч!

-6