【问题标题】:SAP B1 v10: DI-API - The type initializer threw an exceptionSAP B1 v10:DI-API - 类型初始化程序引发异常
【发布时间】:2021-07-13 17:47:14
【问题描述】:

我正在尝试在 Visual Studio for SAP B1 版本 10.00.150 中以调试模式 (x64) 运行插件。此插件在 9.3 版中运行良好。

我已使用代码中的正确版本更新了 SAP bob 和 boui 的 .dll 文件。这是一个 Hana DB。我已经确定我已经为调试输入了正确的连接字符串。

我以管理员身份运行 SAP B1 客户端 x64 和 Visual Studio。

但是,我在这一行得到一个错误:

// First initialize the Company object
Company = new SAPbobsCOM.Company();

错误:

System.TypeInitializationException
HResult=0x80131534
Message=The type initializer for 'SAP_DMS_Integration.Helpers.SboConnection' threw an exception.
Source=SAP_DMS_Integration
StackTrace:
at SAP_DMS_Integration.Helpers.SboConnection.get_SboApplication() in C:\Users\sconsult1\Desktop\CCL\DMS\SAP_DMS_Integration\SAP_DMS_Integration\Helpers\SboConnection.cs:line 17
at SAP_DMS_Integration.GUI..ctor() in C:\Users\sconsult1\Desktop\CCL\DMS\SAP_DMS_Integration\SAP_DMS_Integration\GUI.cs:line 33
at SAP_DMS_Integration.Program.Main() in C:\Users\sconsult1\Desktop\CCL\DMS\SAP_DMS_Integration\SAP_DMS_Integration\Program.cs:line 17

Inner Exception 1:
FileNotFoundException: Retrieving the COM class factory for component with CLSID {632F4591-AA62-4219-8FB6-22BCF5F60100} failed due to the following error: 8007007e The specified module could not be found. (Exception from HRESULT: 0x8007007E).

这是正在运行的 SAP 版本:

我已经为代码中的版本添加了正确的 .dll 文件:

如何解决这个错误?

【问题讨论】:

    标签: sapb1 sap-business-one-di-api


    【解决方案1】:

    该错误意味着 .net 运行时无法找到并实例化 DI-API COM 对象。问题可能是由于以下原因之一:

    • DI-API 未安装
    • 已安装 DI-API 的位数与您的插件的位数不匹配
    • 您安装了 9.x DI-API(不同的 COM GUID)

    正确的 DI-API 通常与 v10 客户端一起安装,但我认为这不是先决条件。如果您安装了 DI-API,它通常会显示在 Windows 添加/删除软件列表中。确保已安装,如果已安装,请尝试重新安装。

    【讨论】:

    • 查看已编辑的问题。 DI-API 已安装,并且我包含了正确的版本,而不是 9.3 版本。
    • 我会从客户端单独卸载并重新安装 DI。如果它说它找不到它,它可能找不到它。唯一的其他选择是引用 SAPBusinessOneSDK.dll(而不是 DI 和 UI COM 对象)并希望实例化 COM 对象有更好的运气。
    • 你的意思是从客户端单独卸载和重新安装?
    • 使用 B1 安装包中的单独 DI-API 安装程序将其删除并重新添加(不影响 B1 客户端)。 "Packages.x64\DI API\setup.exe"
    • 删除和添加后同样的问题...我会继续努力解决
    【解决方案2】:

    我建议您始终在要运行项目的位置安装 32 位和 64 位版本的 DI API,并在您的项目中引用 SAP Business One SDK DLL(因为它会选择正确的 DI API 版本(按位),具体取决于环境。

    Daz 提到了比特性,这就是我在这里所说的,只是把它拼写得更清楚一点:P 100% 的时间我都在为组件检索 COM 类工厂而苦苦挣扎,这是因为我有错误已安装 DI API。有时我确信我不需要 32 位,但我的项目可能包含另一个 DLL,它强制项目构建为 32 位,因此 DI API 64 位是不够的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 2013-05-15
      • 2013-11-08
      • 2019-07-08
      • 2013-10-06
      相关资源
      最近更新 更多