我们的团队中有4位开发人员。我自己和另一个都没有遇到此问题,但其他两个都遇到了。我们在同一代码库中使用相同的代码库,并且都在运行VS 2017 Professional。
当我在Debug中运行项目并尝试生成报告时,一切运行顺利。
当我的同事尝试执行完全相同的过程时,他们会收到错误,指出无法加载依赖的Crystal DLL。我确认要查找的版本在其开发工具箱的GAC中。
要尝试解决此问题,我将DLL添加到项目中并添加了对它的引用。我还必须将“嵌入互操作类型”设置为False,以便将“复制本地”设置为True。这就解决了该特定问题,但是对于另一个依赖的Crystal DLL,将出现另一个错误。我研究了一系列这些“缺失”的DLL(5或6),将每个DLL添加到项目中,然后重试。
我得到的最后一个错误是:
无法将类型为“ CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass”的COM对象转换为接口类型为“ CrystalDecisions.ReportAppServer.Controllers.ISCRReportSource”的接口。由于以下错误,操作失败是因为对IID为“ {GUID值}”的接口在COM组件上对QueryInterface调用失败,原因是以下错误:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE))。
重申一下,仅当在我们的4个开发箱中的2个进行调试时才会发生此错误。
我还验证了有问题的两个盒子与我的盒子具有相同的Crystal安装。这些是用于.NET Framework(32位和64位)的SAP Crystal Reports 2013 SP11和SAP Crystal Reports运行时引擎。
令我感到困惑的是,GAC DLL在两个框上均未找到,但在其他两个框上都找到。有什么想法吗?