Как я могу улучшить скорость разработки плагинов.NET?
Я разрабатываю надстройку AutoCAD, которая использует сборку.NET 4.6. Я нахожу процесс разработки очень расстраивающим; API очень велик, и документация, выходящая за рамки начального, повсеместна, и ее очень трудно найти. Похоже, что единственный способ добиться чего-либо - это просто создать прототип функции в Visual Studio и посмотреть, работает ли он. Затем требуется несколько минут, чтобы загрузить AutoCAD и подключить отладчик, который разрушает мой рабочий процесс создания прототипов.
Было бы очень удобно, если бы у меня было что-то вроде Linqpad для прототипирования моих приложений, чтобы я мог найти данные, которые я ищу. Я не женат на идее использования Linqpad; однако, если я пропускаю другую технику, я бы хотел услышать об этом.
Я не уверен, что это то, чего я мог бы достичь с про версией, но так как нет пробной версии, я не могу узнать.
2 ответа
Это правда, API действительно большой, а некоторые функциональные возможности плохо документированы. Мне было трудно начать, но как только я познакомился с основной концепцией и функциональностью, мне стало очень приятно работать с ним, так как API очень мощный и с ним легко работать, как только вы его получите. Я не уверен, какие источники вы проверили, но я начал с этой документации разработчика. Прокрутите вниз к учебным лабораториям. Я бы порекомендовал вам хотя бы прочитать учебные лаборатории ObjectARX и.NET. Проведите несколько дней, работая в лабораториях.NET, так как это сэкономит вам бесчисленные часы.
Что касается отладки, приведенная ниже настройка должна дать вам наиболее эффективный и действенный подход (здесь я использую VS 2015 и AutoCad 2015). В свойствах проекта на вкладке "Отладка" ваши настройки должны быть следующими:
- Установите флажок "Запустить внешнюю программу:" и введите путь к исполняемому файлу AutoCad. Это относится и к другим версиям AutoCad.
- В поле "Аргументы командной строки:" введите
/nologo
, Это значительно ускорит запуск AutoCad.
Чтобы загрузить dll в AutoCad автоматически, вы можете сделать это либо через реестр (мой предпочтительный способ), либо через acad20xxdoc.lsp или acad.lsp (AutoCad будет запускать эти сценарии по умолчанию для каждого документа, который вы открываете, или когда AutoCad запускается соответственно). Вы можете найти подробности в этом посте.
Теперь нажатие F5 запустит AutoCad и загрузит отладчик. Теперь вы можете перебирать строки кода, как и для любого другого фрагмента кода. Поместите точку останова в начале вашего кода, затем выполните команду в AutoCad. Ваша точка останова должна быть поражена.
В сторону: /nologo
также можно добавить к ярлыку AutoCad на рабочем столе, чтобы ускорить работу AutoCad для пользователей. Его можно добавить в поле "Target:" в свойствах ярлыка. т.е. "C:\Program Files\Autodesk\AutoCAD 2015\acad.exe" /nologo
Примечание: возможный Gotcha! Убедитесь, что все библиотеки AutoCad, для которых в ссылках вашего проекта установлены свойства:
- Вставить типы взаимодействия -> Ложь
- Скопировать Локальный -> Ложь. Также убедитесь, что нет никаких библиотек AutoCAD (т.е.
acmgd.dll
или любые dll с именами, начинающимися с "ac") в вашем каталоге Debug/Release. Удалите все, что найдете. Невыполнение этого требования приведет к ошибкам и сбоям, которые будет очень трудно отследить.
Вы можете запустить скрипт при отладке, чтобы загрузить вашу DLL с помощью /b
переключатель командной строки.
Добавьте что-то вроде следующего в конец того, что у вас уже есть в текстовом поле Аргументы командной строки в Visual Studio
/b "C:\Path\To\Script\AutoNetLoadDebug.scr"
Сценарий называется AutoNetLoadDebug.scr
имеет содержимое что-то вроде
netload "C:\Path\To\Dll\Your.dll"
Примечание: в конце этой строки должен быть перевод строки, чтобы она действительно выполняла команду. Убедитесь, что у вас не настроен AutoCAD для загрузки этой библиотеки DLL или другой сборки. Если вы это сделаете, запустите AutoCAD с другим профилем, используя /p
переключатель командной строки.
Вы не можете запустить что-либо из AutoCAD API вне AutoCAD, библиотеки.NET DLL - это просто отображения неуправляемого кода в недрах AutoCAD
Я делаю много журналов ( Serilog), особенно в отладке. Есть также CADtest на Github, а также https://github.com/wtertinek/AcadTestRunner. Я однажды пытался издеваться над API AutoCAD. Однажды Следовательно, CADtest.
Подсказка: попробуйте ловить везде и следите за нулями, но вы, вероятно, уже обнаружили это.
Прочитайте вики AutoCAD Tag и посмотрите на другие упомянутые там форумы и блоги, они являются золотой жилой в знаниях API AutoCAD