Как обновить dll/ плагин без перезапуска AutoCAD?
У меня есть библиотека классов DLL, которая загружает сценарии AutoCAD из сетевой папки. Однако мне нужен способ обеспечить автоматическое обновление библиотеки классов. С приложениями Windows Form я бы просто использовал развертывание ClickOnce, а затем использовал Application.Restart, однако, поскольку это должна быть библиотека классов (так как это дополнение для AutoCAD), это кажется невозможным.
Какой лучший способ справиться с этим?
3 ответа
Некоторые разработчики имеют 2 (или более) DLL-библиотеки с кодом AutoCAD: 1-я основная DLL загружается при запуске AutoCAD, проверяет наличие обновлений, загружает и устанавливает. Вторая DLL фактически содержит команды, которые будут загружаться по требованию, когда пользователь запускает команду.
Это невозможно с плагинами AutoCAD, потому что DLL загружена в AppDomain. Это "тихое" обновление возможно только с C++.
Вы можете пойти по пути TDD, что является хорошей практикой. Вот раздаточный материал по этой теме, потому что TDD в AutoCAD не так прост из-за вышеупомянутой проблемы.
Вы можете попытаться разработать свой алгоритм в своих собственных классах, чтобы получить лучший опыт работы с TDD. Затем перенесите его с DTO в транзакцию AutoCAD.
Недавно я создал решение, позволяющее перезагружать ту же копию .dll в AutoCAD.
Проверьте мой блог с полным решением:
http://www.cadwiki.net/blogpost/How-to-reload-a-.dll-into-AutoCAD