Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 27-03-2020, 16:56:19

Название: Выгрузка Net сборок своего плагина
Отправлено: Алексей (IdeaSoft) от 27-03-2020, 16:56:19
Есть ли возможность в AutoCAD API (если не AutoCAD API, то может другими методами)
выгрузить .NET сборки плагина.
Эта задача нужна для того чтобы обеспечить "горячую" замену обновлений приложения.
Потому как ясное дело подменить файлы сборок при запущенном AutoCAD не получится.
Название: Re: Выгрузка Net сборок своего плагина
Отправлено: Александр Ривилис от 27-03-2020, 17:00:03
Есть ли возможность в AutoCAD API (если не AutoCAD API, то может другими методами)
выгрузить .NET сборки плагина.
Эта задача нужна для того чтобы обеспечить "горячую" замену обновлений приложения.
Потому как ясное дело подменить файлы сборок при запущенном AutoCAD не получится.
Обсуждалось и неоднократно на этом форуме. Такой возможности нет. Есть возможность загрузить другую сборку с другим именем файла, но вполне возможны проблемы. Во всяком случае проблемы должны быть в случае если плагин подписывается на какие-то события из AutoCAD .NET API. Возможен конфликт обработчиков событий.
Название: Re: Выгрузка Net сборок своего плагина
Отправлено: Александр Ривилис от 27-03-2020, 17:03:53
Эта задача нужна для того чтобы обеспечить "горячую" замену обновлений приложения.
У меня это реализовано логичней. При включении компьютера идёт синхронизация приложений с сервера. В этот момент само-собой AutoCAD еще не запущен и проблем с обновлением не возникает. Кроме того на рабочем столе Windows есть ярлык, который запускает эту синхронизацию. Если возникает необходимость выполнить синхронизацию без перезагрузки, то пользователь выходит из AutoCAD и запускает синхронизацию, а затем снова запускает AutoCAD. Мне кажется, что это самая простая и логичная схема.
Название: Re: Выгрузка Net сборок своего плагина
Отправлено: Привалов Дмитрий от 27-03-2020, 18:44:11
Мне кажется, что это самая простая и логичная схема.
Реализовал аналогичную схему. Только ярлыка перезагрузки нет, т.е. если надо обновить достаточно попросить пользователя перезагрузить компьютер. Есть возможность запустить скрипт синхронизации, но это не для пользователей, чтоб не усложнять.

Есть еще пара схем, которые достаточно просты, хоть и не универсальны, но достойны рассмотрения.
2. Если пользователей не много, например 1-2 отдела 15-30 человек, занимающих пару комнат, можно все настройки поместить в сетевой папке.
+ очень просто сделать
- сложно обновлять, нужно всех попросить закрыть автокады, либо обновлять папку вечером или в субботу.

3. У Алексея Кулика выложен код, автообновления пользовательских меню, если я правильно понял, то он и папку с программами так обновляет.
Если пользователи сидят распределено, то вполне себе рабочая схема. При старте автокада проверяется папка, заменяются файлы, затем перезагрузка меню при необходимости и загрузка плагинов.
+ весь код синхронизации можно написать на Lisp и поместить в mnl файл.
- Если папка с программами разрастется, то автокад будет долго стартовать.
Название: Re: Выгрузка Net сборок своего плагина
Отправлено: Александр Ривилис от 27-03-2020, 19:44:05
Только ярлыка перезагрузки нет, т.е. если надо обновить достаточно попросить пользователя перезагрузить компьютер. Есть возможность запустить скрипт синхронизации, но это не для пользователей, чтоб не усложнять.
У меня это не ярлык перезагрузки, а ярлык синхронизации (exe-файл, который ярлыком запускается и сравнив эталонный каталог на сервере и каталог у пользователя, выполняет обновление). Считаю, что специально перезагружать компьютер - это слишком большая роскошь.
Название: Re: Выгрузка Net сборок своего плагина
Отправлено: Привалов Дмитрий от 27-03-2020, 22:02:25
У меня это не ярлык перезагрузки, я ярлык синхронизации (exe-файл, который ярлыком запускается и сравнив эталонный каталог на сервере и каталог у пользователя, выполняет обновление). Считаю, что специально перезагружать компьютер - это слишком большая роскошь.
насчет ярлыка для перезагрузки оговорился, имел ввиду синхронизации.
А про синхронизацию, можно подробнее? Хочу понять сценарий, при котором пользователям нужна такая возможность.
По моему опыту синхронизации раз в день, при загрузке достаточно. Когда я что-то добавляю/ изменяю то обычно сообщаю пользователям на следующий день. Очень редко, при тестировании изменений, возникает потребность, с одним-двумя проектировщиками, остальные получают обновления после перезагрузки.
Название: Re: Выгрузка Net сборок своего плагина
Отправлено: Александр Ривилис от 27-03-2020, 22:08:51
Очень редко, при тестировании изменений, возникает потребность, с одним-двумя проектировщиками, остальные получают обновления после перезагрузки.
У меня обычно аналогично. И соответственно они получают обновления практически моментально без перезагрузки. Часто обновление заключается не только в обновлении/добавлении arx/dll/lsp, но и cui(x) и каких-то dwg-файлов (блоков). Остальным, кому это сейчас не нужно, получат обновление после перезагрузки.