C3d2018+VS2017CE. Исключение eFilerError при запуске отладки.

Автор Тема: C3d2018+VS2017CE. Исключение eFilerError при запуске отладки.  (Прочитано 3114 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Включил в студии остановку при возникновении исключений типа Autodesk.AutoCAD.Runtime.Exception и при запуске отладки в Civil 3D 2018 стал ловить такое исключение:
Цитировать
Exception thrown: 'Autodesk.AutoCAD.Runtime.Exception' in AcdbMgd.dll
Additional information: eFilerError
Именно при запуске, то есть, когда Сивил открывается, но моё приложение в него ещё не загружено. В 2014-2017 версиях такого нет.
Интересно, это только у меня так?
Можно как-то понять, какой ему файл не найти?
Скрин трассировки прилагаю.

Отмечено как Решение Дмитрий Загорулькин 29-09-2017, 14:32:07

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Можно как-то понять, какой ему файл не найти?
Это вряд ли. Но похоже это связано с меню (cuix-файл или что-то с ним связанное - скорее всего иконки). Я думаю, что это нормальная ситуация. HostApplicationServices.FindFile только так и может сообщить о том, что файл не найден.
Код - C# [Выбрать]
  1. // Autodesk.AutoCAD.Customization.CustomizationHostServices
  2. public string FindFile(string fileName)
  3. {
  4.         if (string.IsNullOrEmpty(fileName))
  5.         {
  6.                 return null;
  7.         }
  8.         string text = null;
  9.         try
  10.         {
  11.                 if (HostApplicationServices.Current != null)
  12.                 {
  13.                         text = HostApplicationServices.Current.FindFile(fileName, null, FindFileHint.Default);
  14.                 }
  15.         }
  16.         catch (Autodesk.AutoCAD.Runtime.Exception)
  17.         {
  18.         }
  19.         finally
  20.         {
  21.                 if (text == null && !Path.IsPathRooted(fileName))
  22.                 {
  23.                         string text2 = Path.Combine(Utils.IconFilePath(), fileName);
  24.                         if (File.Exists(text2))
  25.                         {
  26.                                 text = text2;
  27.                         }
  28.                 }
  29.         }
  30.         return text;
  31. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Вот оно что! Спасибо! То есть, если файл не найден, то генерируется исключение. Это исключение обрабатывается, но студия всё равно его отлавливает. Логично, т.к. у меня в настройках исключений как раз так и задано. Научить бы ещё студию останавливаться только в том случае, когда исключение происходит в моей сборке...

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Научить бы ещё студию останавливаться только в том случае, когда исключение происходит в моей сборке...
Думаю, что это тебе тоже ничего не даст. Технология AutoCAD .NET API построена на генерации исключений в тех случаях, когда в  чистом ObjectARX возвращается какой-то код ошибки (Acad::ErrorStatus).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
На самом деле даёт очень много. Я вижу где происходит исключение. Могу проверить значения переменных в момент, когда оно произошло. Это сильно помогает понять причину исключения.
Но вот такие "сторонние" прерывания немного мешают :)