代码之家  ›  专栏  ›  技术社区  ›  itguy2015

为什么SAPbobsCOM的“嵌入互操作类型”需要设置为false。SAP b1项目中的dll?

  •  0
  • itguy2015  · 技术社区  · 8 年前

    在我的第一个SAP B1项目中,我为 SAPbobsCom.dll 。这是一个“DI API”加载项项目,即不需要从SAP B1内部运行加载项。我创建的代码编译得很好,我想我还可以。

    然而,出现了一个新的要求,即它必须在SAP B1内部运行。长话短说,我意识到为了打包SAP b1工具的附加组件,我需要将嵌入互操作类型设置为False。

    然后,我在SAP论坛上找到一些文章,指出建议将互操作类型设置为false,否则会“导致问题”。但没有解释为什么会这样,或者会出现什么问题。我想知道这是否是SAP类、COM或其他特定的问题。为什么这种设置会改变类的行为方式?

    当我尝试将嵌入互操作类型设置为False来重新编译加载项时,许多使用SAPbobsCOM类的语句都失败了。错误的形式为:无法将类型“xyz”隐式转换为“abc”。存在显式转换(是否缺少转换?)

    例如,为了获取语句:

    objRecSetDN = SapObjects.oCompany.GetBusinessObject(BoObjectTypes.BoRecordset)
    

    要编译,我必须将其更改为:

    objRecSetDN = (SAPbobsCOM.Recordset)SapObjects.oCompany.GetBusinessObject(BoObjectTypes.BoRecordset)
    

    我不得不改变:

    string CheckSend = RS.Fields.Item("U_Send").Value;
    

    收件人:

    string CheckSend = (string)RS.Fields.Item("U_Send").Value;
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Kinyanjui Kamau    8 年前

    多年来,我一直在制作SAP B1插件,从未设置 Embed Interop Types 为false。我认为你不必这样做。这适用于使用添加的插件。ard文件和程序在B1之外运行。 这也适用于 SAPbouiCom.dll

    我在Visual Studio中使用 B1DESetup_B192 工具,不存在上述要求。请参见下图。

    enter image description here