компонент activeX в Axapta

Я борюсь с .net activeX, который я пытаюсь использовать в ms axapta 2009.

используя этот компонент на моем локальном компьютере, где он был скомпилирован, он работает нормально. его можно добавить как элемент activeX в форму, методы и события перечислены в axapta-activeX-explorer, и я могу без проблем взаимодействовать с ним.

но попытка распространить DLL другим клиентам не работает должным образом. регистрация dll через regasm / codebase / tlb работает исправно - получено сообщение, регистрация прошла успешно. компонент также отображается при выборе элемента activeX для добавления в ax, но не перечисляются ни функции, ни свойства. и запуск формы приводит к сообщению об ошибке - CLSID компонента activeX ... не найден в системе, не установлен. classID действительно тот, который определен в .net.

странные вещи случаются, заглянув в диспетчер задач. сам компонент activeX - это просто оболочка для взаимодействия с com-приложением. при запуске топора с неработающим и _не_установленным_ !! activeX-thing, диспетчер задач показывает новый процесс com-приложения, экземпляр которого запускается activeX: /

вещи, которые я пробовал:

  • с использованием разных версий regasm, например \ Windows \ Microsoft.NET \ Framework \ v2.0.50727; C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727
  • использование новых GUID в .net, до удаления старых из реестра
  • компиляция с использованием разных версий .NET Framework
  • выполнение регистрации через regasm, regasm / codebase, regasm / codebase / tlb, используя установку visual-studio
  • запуск регистрации через командную строку от имени администратора
  • запуск установки от имени администратора
  • запускать даже топор как администратор на клиентской машине
  • перемещение dll в другую папку с последующей новой регистрацией (windows / system32; ax / client / bin)
  • установка в GAC (gacutil / i)
  • различные варианты проекта в Visual Studio (COM-Visibility; регистрация для COM-взаимодействия; другая targetPlatform)

надеялся на то, что компиляция в Visual Studio с включенной опцией register for COM-Interop делает что-то большее, чем просто regasm-registration, я использовал инструмент registry-monitor-microsoft для регистрации активности реестра, которая произошла во время компиляции.

использование этих журналов для создания всех записей реестра на целевом клиенте также не сработало.

любые подсказки или помощь будут очень признательны! эта штука блокирует меня уже несколько дней :(


person Nico    schedule 01.06.2010    source источник
comment
Почему вы обращаетесь к компоненту .Net через интерфейс COM, а не напрямую через среду CLR? Вы пробовали получить доступ через регистрацию в AOT \ References? Вы пробовали regsvr32 зарегистрировать DLL (Regasm должен сделать эту работу). Regsvr32 используется для регистрации компонентов COM / ActiveX.   -  person Jan B. Kjeldsen    schedule 01.06.2010
comment
Попробуйте указать точное сообщение об ошибке.   -  person Jan B. Kjeldsen    schedule 08.06.2010
comment
Почему именно ActiveX - это визуальный компонент, который нужно встроить в форму AX?   -  person Jan B. Kjeldsen    schedule 08.06.2010


Ответы (3)


Обзор интеграции COM смотрите здесь:

http://msdn.microsoft.com/en-us/library/aa591337.aspx

Обзор интеграции .Net можно найти здесь:

http://msdn.microsoft.com/en-us/library/aa659581.aspx

person Jan B. Kjeldsen    schedule 08.06.2010

"целевое" приложение, с которым я хочу взаимодействовать, представляет собой автономный исполняемый файл с функциональностью COM. насколько я знаю, COM не поддерживается (или не будет) в AX 2009, поэтому следует использовать .net. Если я правильно понимаю ваш ответ, это всего лишь еще один раунд! DLL просто работает как оболочка для доступа к упомянутому выше приложению. regsvr32 не работает с dll, поскольку для регистрации необходимо использовать regasm. Я также добавил ссылку в AOT - без изменений. Любопытно то, что он уже работал и все еще работает в моей локальной системе разработки. но не в других системах.

person Community    schedule 01.06.2010
comment
COM + поддерживается AX 2009, но может не быть в будущих версиях. - person Jan B. Kjeldsen; 08.06.2010
comment
Я до сих пор не понимаю, как ваше целевое приложение и AX должны работать вместе. Какое главное приложение, какой тип связи требуется между ними. - person Jan B. Kjeldsen; 08.06.2010

проблема решена. все было правильно - вводило в заблуждение только сообщение об ошибке, запускающее форму с добавленным ActiveX-компонентом, в котором говорилось, что «компонент не найден в системе ...»

это была совершенно другая ошибка в коде activeX: парсинг xml-документа со специальным символом в нем и без определения правильной iso-кодировки в xml-файле выдал ошибку, которая не была обнаружена. это (!!) вызвало все дальнейшие проблемы и ошибку, упомянутую в исходном сообщении: /

все равно спасибо за помощь.

person Nico    schedule 01.07.2010