我正在努力尝试在 ms axapta 2009 中使用 .net activeX。
在我编译该组件的本地计算机上使用该组件,它工作得很好。 它可以作为 activeX 元素添加到表单上,方法和事件列在 axapta-activeX-explorer 中,我可以毫无问题地与它交互。
但是尝试将 dll 分发给其他客户端并不能按预期工作。 通过 regasm/codebase/tlb 注册 dll 工作正常 - 收到消息,注册成功。 当选择要添加到 ax 中的 activeX 元素时,也会列出该组件,但既没有列出功能也没有列出属性。启动表单会导致错误消息 - activeX 组件 CLSID ...在系统上找不到,未安装。 classID 确实是.net 中定义的。
看看任务管理器,奇怪的事情发生了。 activeX 组件本身只是与 com 应用程序交互的包装器。当启动 ax-form 时,不工作并且_not_installed_!! activeX-thing,任务管理器显示com应用程序的新进程,该进程由activeX实例化:/
我尝试过的事情:
- 使用不同版本的 regasm,例如\Windows\Microsoft.NET\Framework\v2.0.50727 ; C:\Windows\Microsoft.NET\Framework64\v2.0.50727
- 在 .net 中使用新的 GUID,先从注册表中删除旧的 GUID
- 使用不同版本的.net框架进行编译
- 使用 Visual-studio-setup 通过 regasm、regasm/codebase、regasm/codebase/tlb 进行注册
- 以管理员身份通过命令行运行注册
- 以管理员身份运行安装程序
- 在客户端计算机上以管理员身份运行甚至 axe
- 将 dll 移动到其他文件夹,然后进行新注册(windows/system32;ax/client/bin)
- 安装到 GAC ( gacutil/i )
- Visual Studio 中的不同项目选项(COM-Visibility;注册 COM-Interop;不同的目标平台)
希望事实是,在启用 COM-Interop 注册选项的 Visual Studio 中进行编译所做的不仅仅是 regasm 注册,我使用了registry-monitor-microsoft-tool 来记录期间发生的注册表事件编译。
使用这些日志在目标客户端上创建所有注册表项也不起作用。
任何提示或帮助将不胜感激! 这件事已经困扰我好几天了:(
最佳答案
关于dll - axapta 中的 activeX 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948338/