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

ADN Club => AutoCAD .NET API => Тема начата: Agens от 24-12-2014, 17:41:55

Название: VB.NET
Отправлено: Agens от 24-12-2014, 17:41:55
После долгой разлуки с VB.NET решил дописать пару приложений, но столкнулся с проблемой (см. скрин).
Ошибка при отладке, при загрузке AutoCAD2014. Подскажите пож-ста, в чем проблема?
Спасибо.
Название: Re: VB.NET
Отправлено: Андрей Бушман от 24-12-2014, 17:43:37
мало исходных данных.
Название: Re: VB.NET
Отправлено: Agens от 24-12-2014, 17:46:39
Добавил используемые ссылки и текст кода...
Ошибка при отладке, при загрузке AutoCAD2014
Первый раз отладка шла нормально, но я поставил ссылки "копировать локально" True, потом видел dll в папке Debug и изменил на False - вылезла ошибка.
Название: Re: VB.NET
Отправлено: Agens от 24-12-2014, 18:30:04
Никто не поможет?
Название: Re: VB.NET
Отправлено: Владимир Шу от 24-12-2014, 18:58:38
У меня всего две мысли..
1. почистить папку дебаг.
2. Использовать .NET API
Название: Re: VB.NET
Отправлено: Александр Ривилис от 24-12-2014, 19:37:05
Никто не поможет?
Не пробовал отключить определение LoaderLock? Как-то так: http://adndevblog.typepad.com/autocad/2012/07/loaderlock-was-detected-when-running-vlide-while-debugging-a-net-addin.html
Хотя странно что в первый раз не было, а потом появилось. Ну и, как предложил Boxa.Shu, очисть (удали) папку Debug.
Название: Re: VB.NET
Отправлено: Agens от 24-12-2014, 21:44:32
Спасибо, что помогаете.
Александр, у меня галочка напротив "LoaderLock" не стоит.
Boxa, все тоже самое наблюдается и на новом проекте, на проекте даже без ссылок на библиотеке, на проекте, в котором
просто идет отладка через запуск Автокада.
Уже нет ошибки, Автокад просто виснет при запуске. Если просто запускать Автокад - все прекрасно грузится.
Даже не знаю, где я "накосячил".
VS переустановил - не помогло, может дело в самом автокаде, как то я больше ему не доверяю...
Название: Re: VB.NET
Отправлено: Александр Ривилис от 24-12-2014, 21:48:38
Из известных мне проблем с VS 2013 - почитай еще эту тему: http://adn-cis.org/forum/index.php?topic=1019.0
Название: Re: VB.NET
Отправлено: Agens от 24-12-2014, 22:15:20
Спасибо Александр, уже читал. Думаете нужно откатиться на 2012?
---
Все началось, быть может, когда я из папки Debug удалили библиотеки, которые я ставил "копировать локально" = True из using (4 шт.), еще одина - "AdWindows.dll".
Что это за библиотека?
Название: Re: VB.NET
Отправлено: Александр Ривилис от 24-12-2014, 22:40:38
Думаете нужно откатиться на 2012?
Попробуй. Других идей у меня нет. Можешь еще поиграться с системными переменными NEXTFIBERWORLD и FIBERWORLD
Название: Re: VB.NET
Отправлено: Александр Ривилис от 24-12-2014, 22:41:48
"AdWindows.dll".
Что это за библиотека?
Это одна из библиотек AutoCAD.
Название: Re: VB.NET
Отправлено: JohnJ от 25-12-2014, 05:08:38
возможно поможет, если вы выложите сюда свой проект, с которым виснет
Название: Re: VB.NET
Отправлено: Agens от 25-12-2014, 11:39:59
JohnJ, проект пустой тоже не хочет работать :)
Название: Re: VB.NET
Отправлено: Agens от 25-12-2014, 17:49:42
Откатил систему - все работает...
---
Можно ли вести отладку кода без запуска AutoCAD, расскажите подробней, п-ста...
Название: Re: VB.NET
Отправлено: Александр Ривилис от 25-12-2014, 17:50:30
Откатил систему - все работает...
Так и что это было?
Название: Re: VB.NET
Отправлено: Александр Ривилис от 25-12-2014, 17:51:44
Можно ли вести отладку кода без запуска AutoCAD, расскажите подробней, п-ста...
Это как? Если код использует AutoCAD, то очевидно что так сделать не получится.
Название: Re: VB.NET
Отправлено: Agens от 25-12-2014, 18:16:54
Откатил систему - все работает...
Так и что это было?

Не знаю, я не заметил момента где мои "кривые ручки" поработали :)

Можно ли вести отладку кода без запуска AutoCAD, расскажите подробней, п-ста...
Это как? Если код использует AutoCAD, то очевидно что так сделать не получится.

Спасибо за ссылку на мою глупость.
Название: Re: VB.NET
Отправлено: Андрей Бушман от 25-12-2014, 21:58:18
Можно ли вести отладку кода без запуска AutoCAD, расскажите подробней, п-ста...
Можно, но боюсь, что на данном сайте мне не дадут рассказать об этом...  ;D
Название: Re: VB.NET
Отправлено: Agens от 04-01-2015, 11:47:32
Вернусь к своему вопросу, может быть не совсем правильно спросил.
Можно ли производить отладку кода, без галочки "запуск внешней программы", чтобы автокад был всегда загружен.
Не оч. удобно каждый раз ждать, пока он загрузится...
Спасибо.
---
Андрей, если Вы не согласны написать тут, то я готов прочитать статью на одном из Ваших сайтов.
---
П.С. Уговорили меня отказаться от VB в пользу C#.
Название: Re: VB.NET
Отправлено: Владимир Шу от 04-01-2015, 14:31:12
Можно ли производить отладку кода, без галочки "запуск внешней программы", чтобы автокад был всегда загружен.
Не оч. удобно каждый раз ждать, пока он загрузится...
не получится. так как архитектура автокада не предполагает выгрузку net библиотек. Т.е. можно присоединится для отладки к запущенному автокаду и загрузить свою библиотеку, но остановив отладку и внеся исправления Вы не сможете повторно загрузить свою библиотеку и повторный запуск отладки будет проходить со старой версией dll.
Название: Re: VB.NET
Отправлено: Андрей Бушман от 04-01-2015, 14:43:03
Можно ли производить отладку кода, без галочки "запуск внешней программы", чтобы автокад был всегда загружен.
Можно подключаться к уже запущенному процессу (http://adn-cis.org/forum/index.php?topic=634.msg2243#msg2243), но применительно к расширениям AutoCAD, написанным на .net, я в этом смысла не вижу, т.к. AutoCAD все .NET расширения грузит в один и тот же домен (AppDomain). В виду этого не удастся эти расширения выгрузить и не завершая работы процесса загрузить повторно.

Можно писать код, попутно создавая автономные и интеграционные тесты. В этом случае количество запусков acad.exe можно существенно сократить. Автономные тесты позволят тестировать код, жёстко не привязанный к AutoCAD без его запуска, а интеграционные самостоятельно запустят AutoCAD и выполнят все тесты. Написание тестов занимает времени не меньше, а возможно что порой и больше, чем время на написание самого кода приложения. Однако наличие грамотных, действительно полезных тестов, способствует существенному снижению количества ошибок в коде (имхо). Когда я пишу интеграционные тесты для AutoCAD, то использую платформу Gallio (https://code.google.com/p/mb-unit/). Для создания автономных тестов предпочитаю NUnit (http://www.nunit.org/).

Цитировать
Андрей, если Вы не согласны написать тут, то я готов прочитать статью на одном из Ваших сайтов.
Это "несогласие" не моё, но владельцев данного форума, а соответственно и его модераторов\администраторов. Запрещено, в общем. На своих ресурсах подробной информации по тестированию расширений кад-систем я пока не размещал, т.к. её качественное изложение требует потратить некоторый существенный объём времени на это (тема не маленькая). У меня свободного времени не так много, чтобы я занялся этим. Кроме того, не так давно проводимый опрос (http://adn-cis.org/forum/index.php?topic=884.0) показал, что никакого смысла в подобной работе нет, ибо не востребовано (я подумывал о том, чтобы для такой книги предоставить подробную информацию по модульному и автономному тестировании в акаде). На первом месте у меня работа, ибо семью кормить нужно, поэтому мне сейчас не до "мемуаров".

Как вариант, ты можешь попросить на данном форуме, чтобы представители Autodesk (те, что получают деньги за написание статей в adn-cis.org) написали хороший материал по тематике модульного и автономного тестирования расширений под AutoCAD. Я помнится когда-то читал у Autodesk какую-то заметку (оформленную в виде PDF) на эту тему, но откровенно говоря - это была "залепуха".

UPD
По поводу отладки .NET расширений без запуска процесса acad.exe - это возможно (http://bushman-andrey.blogspot.ru/search/label/Teigha), при желании. Например, я нередко выполняю отладку .NET кода своих расширений для CAD систем на компьютере, где вовсе не установлено ни одной CAD (необходимы только соответствующие SDK). Результаты компиляции, как правило, работают в т.ч. и в AutoCAD 2009-2015.
Название: Re: VB.NET
Отправлено: Александр Ривилис от 04-01-2015, 15:28:01
Андрей Бушман, в очередной раз повторюсь. Никакие клоны, никакие API от сторонних производителей на этом форуме мы не обсуждаем. Все упоминания о них буду удалять.
Название: Re: VB.NET
Отправлено: Дима_ от 07-01-2015, 02:03:00
Если разрабатываемый модуль не является оберткой на автокадное айпи, или тем паче автокад используется как средство ввода-вывода (через проверенные функции), то автокад я запускаю только в самом конце для финальной проверки,  всю логику (не автокадную), я "простреливаю" в интерпритаторе. Правда в обсуждаемом vb.net его пока нет, но MS обещала сделать...
Название: Re: VB.NET
Отправлено: Александр Ривилис от 07-01-2015, 02:14:53
Если разрабатываемый модуль не является оберткой на автокадное айпи
На название раздела внимание не обратил?  Последствие Нового Года?  ;)
Название: Re: VB.NET
Отправлено: Дима_ от 07-01-2015, 02:37:27
Да кстати с НГ. Названия вроде правильно прочел - просто хотел акцентировать внимание, что совсем не всегда для тестирования модуля который будет работать под автокад нужно его обязательно каждый раз весь загружать и проверять - достаточно проверить и только необходимую часть - которая может непосредственно и не взаимодействовать с автокадом - по моей практике чем больше, по функционалу, программа, тем меньше, в процентном соотношении, в ней функций завязанных на автокад.