首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ACCPAC缺失方法异常

ACCPAC缺失方法异常
EN

Stack Overflow用户
提问于 2018-05-03 21:24:19
回答 1查看 550关注 0票数 3

我有一个ASP.NET Core1.1Web服务器运行在完整的.NET 4.6.2上。我正在使用ACCPAC.Advantage.dll(打包在自定义的NuGet包中)连接到本地Sage安装。以前成功启动了连接,并且能够将批处理发送到应付账款。但是现在启动连接失败了,出现了以下错误:

代码语言:javascript
复制
System.MissingMethodException: Method not found: 'ACCPAC.Advantage.DBLink ACCPAC.Advantage.Session.OpenDBLink(ACCPAC.Advantage.DBLinkType, ACCPAC.Advantage.DBLinkFlags)'.

Intellisense和ReSharper的反编译功能可以很容易地找到Session.OpenDBLink方法,那么为什么在运行时缺少它呢?

它是否从全球程序集缓存中提取了错误的程序集?在不破坏其他需要这些程序集的应用程序的情况下,解决这个问题的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-04 21:15:17

另一位智者第三方开发人员提出了一个.Net问题,听起来就像你正在经历的。这是他们在Sage论坛(鼠尾草城市邮政)上不得不说的话:

在鼠尾草2018年PU2鼠尾草决定..。 将\HKLM\SOFTWARE\Web 6432Node\ACCPAC International,Inc.\ACCPAC\Web\A4WNET的版本号提高到6.5.0.2,但不能与.net运行时库版本(6.5.0.10)保持一致。这已经破坏了Sage300的8个版本,而这两个版本都是同步的。 为什么这是个问题?.net程序集被加载到GAC中,为了避免在版本更新后重新编译/重新发布应用程序,我们使用反射加载程序集。 在此更新之前,我们可以使用System.Reflection.Assembly.Load(完整程序集签名)。但是,要使用这种方法,我们需要知道S300运行时程序集(Accpac.Advantage.dll)的版本,这是通过查询注册表获得的。 为了解决这个问题,我们现在使用System.Reflection.Assembly.LoadFile方法。这很好,但它确实绕过了.net程序集加载程序在调用Load时所做的检查。

代码语言:javascript
复制
const string SAGE_RUNTIME = "Sage\\Sage 300 ERP\\ACCPAC.Advantage.dll";

Assembly assem =
Assembly.LoadFile(
System.IO.Path.Combine(
Environment.GetFolderPath(
Environment.SpecialFolder.CommonProgramFilesX86), SAGE_RUNTIME));

编辑:另一种选择是通过COMApi使用.Net接口。

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

https://stackoverflow.com/questions/50164057

复制
相关文章

相似问题

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