我正在努力使用.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实现:/ 我试过的事情:希望在Visual Studio中编译并启用COM-Interop选项的注册不仅仅是regasm-registration,我使用了一个registry-monitor-microsoft-tool来记录在发生期间发生的注册表活动汇编
使用这些日志在目标客户端上创建所有注册表项也是无效的。
任何提示或帮助都会非常感激! 这件事现在阻挡了我好几天:(
答案 0 :(得分:2)
答案 1 :(得分:1)
我希望与之交互的“目标”应用程序是具有COM功能的独立exe。 据我所知,COM 2009不支持(或不会支持) - 因此应该使用.net。 如果我理解你的答案,那就是另一轮! dll只是作为访问上述应用程序的包装器。 regsvr32不能与dll一起使用,因为必须使用regasm进行注册。 我还在AOT中添加了一个参考 - 没有变化。 奇怪的是 - 它已经有效,并且仍然在我的本地开发系统上工作。但不在其他系统上。
答案 2 :(得分:1)
问题解决了。 一切都是正确的 - 只有误导性的事情是错误消息启动添加了activeX-component的表单,告诉“系统上找不到组件......”
在activeX代码中出现完全不同的错误: 解析一个带有特殊字符的xml文档,而没有在xml文件中定义正确的iso编码,抛出了一个没有捕获的错误。这个(!!)引起了所有进一步的问题和初始帖子中提到的崩溃错误:/
无论如何,谢谢你的帮助。