axapta中的activeX组件

时间:2010-06-01 08:46:08

标签: dll activex axapta

我正在努力使用.net activeX,我尝试在ms axapta 2009中使用。

在我编译的本地机器上使用这个组件,它工作得很好。 它可以作为activeX元素添加到表单上,方法和事件列在axapta-activeX-explorer中,我可以毫无问题地与它进行交互。

但是尝试将dll分发给其他客户端并没有按预期工作。 通过regasm / codebase / tlb注册dll工作正常 - 获取消息,注册成功。 选择要在ax中添加的activeX元素时,也会列出该组件,但不会列出函数和属性。并启动表单导致错误消息 - activeX组件CLSID ...在系统上找不到,未安装。 classID确实是.net中定义的那个。

奇怪的事情发生了,看看任务经理。 activeX-component本身只是一个与com应用程序交互的包装器。当启动ax-form时不能正常工作和_not_installed_ !! activeX-thing,taskmanager显示了一个新的com应用程序进程,该进程由activeX实现:/

我试过的事情:

  • 使用不同版本的regasm,例如\ Windows \ Microsoft.NET \ Framework \ v2.0.50727; C:\的Windows \ Microsoft.NET \ Framework64 \ V2.0.50727
  • 在.net中使用新GUID,之后从注册表中删除旧GUID
  • 使用不同版本的.net框架进行编译
  • 通过regasm,regasm / codebase,regasm / codebase / tlb进行注册,使用visual-studio-setup
  • 以管理员身份通过命令行运行注册
  • 以管理员身份运行安装程序
  • 在客户机上以管理员身份运行ax甚至
  • 将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来记录在发生期间发生的注册表活动汇编

使用这些日志在目标客户端上创建所有注册表项也是无效的。

任何提示或帮助都会非常感激! 这件事现在阻挡了我好几天:(

3 个答案:

答案 0 :(得分:2)

有关COM集成的概述,请点击此处:

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

有关.Net集成的概述,请点击此处:

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

答案 1 :(得分:1)

我希望与之交互的“目标”应用程序是具有COM功能的独立exe。 据我所知,COM 2009不支持(或不会支持) - 因此应该使用.net。 如果我理解你的答案,那就是另一轮! dll只是作为访问上述应用程序的包装器。 regsvr32不能与dll一起使用,因为必须使用regasm进行注册。 我还在AOT中添加了一个参考 - 没有变化。 奇怪的是 - 它已经有效,并且仍然在我的本地开发系统上工作。但不在其他系统上。

答案 2 :(得分:1)

问题解决了。 一切都是正确的 - 只有误导性的事情是错误消息启动添加了activeX-component的表单,告诉“系统上找不到组件......”

在activeX代码中出现完全不同的错误: 解析一个带有特殊字符的xml文档,而没有在xml文件中定义正确的iso编码,抛出了一个没有捕获的错误。这个(!!)引起了所有进一步的问题和初始帖子中提到的崩溃错误:/

无论如何,谢谢你的帮助。