компонент activeX в axapta - PullRequest
       77

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

2 голосов
/ 01 июня 2010

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

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

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

происходят странные вещи, глядя на диспетчер задач. Сам компонент ActiveX является просто оболочкой для взаимодействия с com-приложением. при запуске формы axe с не работает и _not_installed_ !! вещь activeX, диспетчер задач показывает новый процесс 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-setup
  • регистрация через командную строку в качестве администратора
  • запущена установка с правами администратора
  • работает даже как администратор на клиентской машине
  • перемещение dll в другую папку с последующей новой регистрацией (windows / system32; ax / client / bin)
  • установка в GAC (gacutil / i)
  • различные опции проекта в visual studio (COM-Visibility; регистрация для COM-Interop; разные targetPlatform)

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

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

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

Ответы [ 3 ]

2 голосов
/ 08 июня 2010

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

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

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

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

1 голос
/ 01 июля 2010

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

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

в любом случае спасибо за помощь.

1 голос
/ 01 июня 2010

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

...