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

ADN Club => AutoCAD .NET API => Тема начата: Podushkin от 28-06-2021, 22:19:18

Название: Установка утилиты на другой компьютер
Отправлено: Podushkin от 28-06-2021, 22:19:18
Разработка утилиты происходила на той же сборке Autocad, что и у "клиента". Как часто и бвывает на компьютере программиста всё работает. У "клиента" - ошибки.
Сначала вот такая штука:

System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.

Что было сделано:
1. Проведена разблокировка .dll на компьютере клиента (пкм->Свойства->"Разблокировать").
2. Внесены правки в acad.exe.config  - loadFromRemoteSources enabled="true".

Теперь вот:

(https://i.postimg.cc/WhxtkP1M/image001.png) (https://postimg.cc/WhxtkP1M)

(https://i.postimg.cc/fVXy7gV1/image002.png) (https://postimg.cc/fVXy7gV1)

На 16, 18 версии автокада все отлично работает. На 2020й - нет.........

В чем еще может быть проблема?
Название: Re: Установка утилиты на другой компьютер
Отправлено: Александр Ривилис от 28-06-2021, 22:28:58
На 16, 18 версии автокада все отлично работает. На 2020й - нет.........

В чем еще может быть проблема?
1. CopyLocal = FALSE в настройках проекта для всех .NET-сборок AutoCAD установлено?
2. Какие .NET-сборки AutoCAD используются? Откуда они взяты (AutoCAD или ObjectARX SDK и какой версии)?
3. В настройках проекта какая версия .NET Framework?
4. Установлены ли все обновления для AutoCAD 2020?
5. Пробовали ли вставить отладочную печать для того, чтобы было понятно в какой момент времени происходит аварийное завершение?
6. Debug или Release версию передали "клиенту"?
Название: Re: Установка утилиты на другой компьютер
Отправлено: Александр Ривилис от 28-06-2021, 22:29:46
2. Внесены правки в acad.exe.config  - loadFromRemoteSources enabled="true".
Это не нужно. Уберите.
Название: Re: Установка утилиты на другой компьютер
Отправлено: Podushkin от 28-06-2021, 22:37:36
1. Да установлено.
2. ObjectARX_for_AutoCAD_2021_Win_64bit_dlm, с офф. сайта.
3. 4.8.
4. У "клиента" скорее всего нет.
5. Не пробовал.
6. Release и Debug не работают одинаково.
Название: Re: Установка утилиты на другой компьютер
Отправлено: Александр Ривилис от 28-06-2021, 22:41:22
2. ObjectARX_for_AutoCAD_2021_Win_64bit_dlm, с офф. сайта.
2. Для AutoCAD 2020 используйте ObjectARX SDK 2020, а не 2021.
4. Установить.
5. Нужно пробовать. Иначе понять в какой момент происходит эта ошибка не получится.
Аварийное завершение происходит в момент загрузки вашей .NET-сборки или при запуске команды, определенной в вашей сборке?
Название: Re: Установка утилиты на другой компьютер
Отправлено: Podushkin от 28-06-2021, 22:48:54
2. Для AutoCAD 2020 используйте ObjectARX SDK 2020, а не 2021.
Что странно, но для 2016 версии работает
Аварийное завершение происходит в момент загрузки вашей .NET-сборки или при запуске команды, определенной в вашей сборке?
Если вручную грузить сборку, то вылетает после NETLOAD, до запуска команды не доходит.
Название: Re: Установка утилиты на другой компьютер
Отправлено: Александр Ривилис от 28-06-2021, 22:50:26
Если вручную грузить сборку, то вылетает после NETLOAD, до запуска команды не доходит.
Значит (на 99.9%) ошибка в методе Initialize или в статических классах/методах. Что в Initialize?
Название: Re: Установка утилиты на другой компьютер
Отправлено: Александр Ривилис от 28-06-2021, 22:56:17
Что странно, но для 2016 версии работает
По хорошему для каждой версии AutoCAD нужно делать свою .NET-сборку, используя AutoCAD'овски сборки из соответствующей версии ObjectARX SDK.
Название: Re: Установка утилиты на другой компьютер
Отправлено: Podushkin от 28-06-2021, 23:03:39
Значит (на 99.9%) ошибка в методе Initialize или в статических классах/методах. Что в Initialize?
Ничего.

Код - C# [Выбрать]
  1.   public class Commands : IExtensionApplication
  2.   {
  3.         Здесь код, методы и т.д.
  4.  
  5.         public void Initialize()
  6.         {
  7.  
  8.         }
  9.  
  10.         public void Terminate()
  11.         {
  12.  
  13.         }
  14. }
Название: Re: Установка утилиты на другой компьютер
Отправлено: Александр Ривилис от 28-06-2021, 23:07:49
Podushkin,
Хм. Крайне странно. Или нужен весь проект для проверки или хотя-бы dll-файл.
Конструктор класса Commands есть?
Название: Re: Установка утилиты на другой компьютер
Отправлено: Podushkin от 28-06-2021, 23:14:23
Конструктор класса Commands есть?
Нет
Название: Re: Установка утилиты на другой компьютер
Отправлено: Александр Ривилис от 28-06-2021, 23:17:29
Конструктор класса Commands есть?
Нет
Статические переменные в этом или каком-то другом классе есть?
Название: Re: Установка утилиты на другой компьютер
Отправлено: Podushkin от 28-06-2021, 23:21:36
Да, в этом.
Название: Re: Установка утилиты на другой компьютер
Отправлено: Александр Ривилис от 28-06-2021, 23:23:18
Да, в этом.
Смотри как они инициализируются. Возможно авариное завершение связано с этим.
Название: Re: Установка утилиты на другой компьютер
Отправлено: Podushkin от 28-06-2021, 23:24:29
Ладно, спасибо.
Название: Re: Установка утилиты на другой компьютер
Отправлено: Александр Ривилис от 28-06-2021, 23:44:07
Podushkin,
Это может быть и баг при установке этой версии AutoCAD (Civil 3D). Можно попросить "клиента" установить MGDDBG для того, чтобы понять не проблема ли у него с AutoCAD/Windows.