dll - axapta 中的 activeX 组件

标签 dll activex axapta

我正在努力尝试在 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 来记录期间发生的注册表事件编译。

使用这些日志在目标客户端上创建所有注册表项也不起作用。

任何提示或帮助将不胜感激! 这件事已经困扰我好几天了:(

最佳答案

有关 COM 集成的概述,请参见此处:

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

有关 .Net 集成的概述,请参见此处:

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

关于dll - axapta 中的 activeX 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948338/

相关文章:

c++ - vc++ 应用程序按序号调用 vc++ dll

HTML5 本地存储 - 创建并写入 json 文件?

axapta - 刷新列表页面网格时光标移动到顶部

X++ 中的组合框

c# - 如何在 C# 项目中构建具有自定义文件扩展名的 DLL?

c++ - 初始化 C 风格的结构

dll - 使用 OllyDbg 反汇编动态链接库

c++ - 无法编译 Microsoft COM/ActiveX 示例

c - native C 中的 ActiveX

axapta - 如何打开包含所选记录的表单?