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 机器上时它崩溃了。
要安装插件,我执行以下操作:
使用 regasm.exe 在注册表的 COM 代码库条目中注册加载项 dll
通过在复制加载项 dll 的文件夹中打开命令提示符并使用 /codebase 选项注册 dll。在我的例子中,该命令是:%WINDIR%\Microsoft.NET\Framework\v4.0.30319
.\RegAsm.exe-tlb-codebase
添加注册表项:以[ProjectName].[ClassName]
的形式向HKEY_CURRENT_USER\Software\SparxSystems\EAAddins添加一个项
此安装在开发和部署的机器上都运行良好,我能够 运行 加载项。
安装在开发机器上时插件工作正常。
但是在已部署的 Windows 7 台机器上,它在一种特定情况下崩溃了:
- 当运行导入物理数据模型时,加载项开始工作(开始提取 Power Designer 信息),然后意外崩溃,只有 Enterprise Architect 的消息 "stopped working".在事件日志中,信息指向 .NET clr。
这是意外情况,因为在这两种情况下加载项都使用相同版本的 .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 加载项崩溃时创建和使用转储文件非常有帮助,并向我指出了可以隔离问题的代码行,这可能会有所帮助。
我在 VS2015 中创建了一个 C# 插件,用于将数据模型从 Power Designer 导入和同步到 Enterprise Architect。它依赖于 PDPDM、PDLDM、PDCDM 和 Interop.EA。
问题是当我部署然后 运行 它在 Windows 7 机器上时它崩溃了。
要安装插件,我执行以下操作:
使用 regasm.exe 在注册表的 COM 代码库条目中注册加载项 dll 通过在复制加载项 dll 的文件夹中打开命令提示符并使用 /codebase 选项注册 dll。在我的例子中,该命令是:%WINDIR%\Microsoft.NET\Framework\v4.0.30319 .\RegAsm.exe-tlb-codebase
添加注册表项:以[ProjectName].[ClassName]
的形式向HKEY_CURRENT_USER\Software\SparxSystems\EAAddins添加一个项
此安装在开发和部署的机器上都运行良好,我能够 运行 加载项。 安装在开发机器上时插件工作正常。
但是在已部署的 Windows 7 台机器上,它在一种特定情况下崩溃了:
- 当运行导入物理数据模型时,加载项开始工作(开始提取 Power Designer 信息),然后意外崩溃,只有 Enterprise Architect 的消息 "stopped working".在事件日志中,信息指向 .NET clr。
这是意外情况,因为在这两种情况下加载项都使用相同版本的 .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 加载项崩溃时创建和使用转储文件非常有帮助,并向我指出了可以隔离问题的代码行,这可能会有所帮助。