Enterprise Architect 加载项 .dll 在部署到 Windows 7 机器时崩溃

Enterprise Architect add-in .dll crashes when deployed on to a Windows 7 machine

我在 VS2015 中创建了一个 C# 插件,用于将数据模型从 Power Designer 导入和同步到 Enterprise Architect。它依赖于 PDPDM、PDLDM、PDCDM 和 Interop.EA。

问题是当我部署然后 运行 它在 Windows 7 机器上时它崩溃了。

要安装插件,我执行以下操作:

  1. 使用 regasm.exe 在注册表的 COM 代码库条目中注册加载项 dll 通过在复制加载项 dll 的文件夹中打开命令提示符并使用 /codebase 选项注册 dll。在我的例子中,该命令是:%WINDIR%\Microsoft.NET\Framework\v4.0.30319 .\RegAsm.exe-tlb-codebase

  2. 添加注册表项:以[ProjectName].[ClassName]

  3. 的形式向HKEY_CURRENT_USER\Software\SparxSystems\EAAddins添加一个项

此安装在开发和部署的机器上都运行良好,我能够 运行 加载项。 安装在开发机器上时插件工作正常。


但是在已部署的 Windows 7 台机器上,它在一种特定情况下崩溃了:

这是意外情况,因为在这两种情况下加载项都使用相同版本的 .NET 注册。


我研究了源代码并将其与使用相同库制作的工作 dll 进行了比较,没有发现任何差异。我确定这与 Windows 7 机器上的部署环境有关。

关于为什么加载项可能在 Windows 7 机器上崩溃的任何想法?

有任何修复建议吗?

更新:我已经尝试缩小代码范围并注释掉代码的各个方面,以使其在 Windows 7 机器上运行。无论我在它开始从 power designer 读取物理模型的任何部分时评论它崩溃,所有其他数据模型(逻辑和概念)都不是这种情况。

考虑到它的行为方式,我正在进一步研究环境和部署。

任何帮助仍然非常感谢...

更新2:感谢大家的帮助。我已经使用了建议并最终找到了错误:

由于 IP... 处的 .NET 运行时发生内部错误,进程已终止,退出代码为 80131506。

我正在使用 environment/garbage 收集器查找此错误代码和错误

正如 Geert 所怀疑的那样,问题出在 Power Designer 上。使用的 Power Designer 类型库在机器之间是不同的,有一个 Power Designer 补丁将 PdPDM 类型库升级到新版本。这改变了使用 PdPDM 类型库时物理数据模型与加载项交互的方式。

当 Enterprise Architect 加载项崩溃时创建和使用转储文件非常有帮助,并向我指出了可以隔离问题的代码行,这可能会有所帮助。