首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在SAPbobsCOM.dll b1项目中需要将“嵌入互操作类型”设置为false?

为什么在SAPbobsCOM.dll b1项目中需要将“嵌入互操作类型”设置为false?
EN

Stack Overflow用户
提问于 2018-03-21 19:11:59
回答 1查看 471关注 0票数 0

在我的第一个SAP B1项目中,我将Embed类型设置为SAPbobsCom.dll的True。这是一个"DI API“附加项目,即不需要在SAP B1内部运行外接程序。我创建的代码编译得很好,我认为我还好。

然而,出现了一个新的要求,即它必须在SAP B1中运行。长话短说,我意识到,为了打包对SAP b1工具的附加包,我将Embed类型设置为False。

然后,我在SAP论坛上找到了一些文章,指出最好将互操作类型设置为false,否则会“造成问题”。但没有解释原因,也没有解释问题会是什么。我想知道这是一个特定于SAP类、COM或其他方面的问题。为什么这种设置会改变类的行为方式?

当我试图重新编译外接程序时,将类型设置为False,许多使用SAPbobsCOM类的语句都失败了。错误的形式是:不能隐式地将'xyz‘类型转换为'abc’。存在显式转换(是否缺少强制转换?)

例如,为了获得语句:

代码语言:javascript
复制
objRecSetDN = SapObjects.oCompany.GetBusinessObject(BoObjectTypes.BoRecordset)

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

代码语言:javascript
复制
objRecSetDN = (SAPbobsCOM.Recordset)SapObjects.oCompany.GetBusinessObject(BoObjectTypes.BoRecordset)

我不得不改变:

代码语言:javascript
复制
string CheckSend = RS.Fields.Item("U_Send").Value;

至:

代码语言:javascript
复制
string CheckSend = (string)RS.Fields.Item("U_Send").Value;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-22 12:49:25

多年来,我一直在制作SAP B1 AddOns,从未将Embed Interop Types设置为false。我觉得你没必要这么做。这是用于使用.ard文件添加的加载项和运行在B1之外的程序。这也适用于SAPbouiCom.dll

我使用B1DESetup_B192工具将我的加载项打包在Visual中,并且没有您前面提到的这样的要求。见下图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49414793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档