我们做了什么:
我们创建了一个 C# 类库项目来与外部 Web 服务通信。当我们选中“注册 COM 互操作”时,此 DLL 会自动注册并准备好在发生注册的 PC 上使用。然后,该 PC 上的 Navision 客户端可以使用“自动化”变量来查找并使用该 DLL。
有什么问题?
我们需要将此 DLL 推广到生产环境。我们正在使用 RDP 解决方案,其中 navision 客户端在我们的用户使用的 2 个 RDP 服务器上运行。这意味着我们只需要能够将 DLL 部署到这 2 台服务器上。我们已经尝试了以下两种解决方案,我们在这里和几篇博客文章中找到了:
- 将 DLL 拖到 C:\windows\assembly(以管理员身份)
- 使用 REGASM 注册 DLL (REGASM ourDll.dll /tlb:ourDll.dll)
执行完这些后,我们在 Navision 中找到了我们尝试使用 CREATE 命令初始化的 DLL:
CLEAR(ourDll);
CREATE(ourDll);
IF ISCLEAR(ourDll) THEN
CREATE(ourDll);
但在此之后我们收到以下错误(翻译版):
此消息适用于 C/AL 程序员:
无法创建由自动化服务器标识的 OLE 控件或自动化服务器的实例,标识 GUID={guid} 1.0:{guid}:'ourDll'.Consume
验证 OLE 控件或自动化服务器是否已正确安装和注册。
在此之后,我们尝试运行 GACUTIL /i ourDll.dll 将我们的 DLL 安装到 GAC 中,但结果保持不变。因为我们已经这样做了,所以有一个错误消息:
文本对于缓冲区来说太长。
然而,这个错误似乎并没有停止编译。运行时的错误消息与上面相同。