【发布时间】:2021-07-02 14:28:10
【问题描述】:
我目前遇到的问题是,旧版软件在我的本地计算机上运行良好,但是当我部署新版本时,客户的应用程序崩溃了。
应用程序使用 devart 连接到使用的 oracle 数据库。我已经用他们的 NuGet 版本和本地替换了引用的 devart dll,一切正常。当我从本地电脑复制编译文件并尝试在客户机器上执行它们时,我收到以下错误:
System.TypeLoadException: Method "InternalClone" in type "Devart.Common.Entity.fa" from assembly "Devart.Data.Oracle.Entity.EF6, Version=9.4.348.0, Culture=neutral, PublicKeyToken=09af7300eec23701" does not have an implementation.
我尝试了其他版本的 devart nugets,但没有成功。当前安装的版本与应用程序的最新版本相同,对我们的客户来说运行良好。
非常感谢任何帮助,因为我已经尝试解决这个问题两天了。
编辑:我使用的是.net framework 4.6 和entity framework 6,不是 .net core 或.net standard
【问题讨论】:
-
此消息通常与某些设置/部署不一致有关。某些组件 (.dll) 引用了另一个组件,但它们是在不同的时间构建的,其中一个是较新的(例如具有更多方法/属性)并且期望另一个组件有更多的东西。
-
@SimonMourier 你知道吗,我怎么知道哪些组件引用了哪个版本的程序集引发了异常?
-
您可以检查进程中的所有程序集(例如使用 sysinternals 的 Process Explorer 等工具)它们是什么版本,看看是否有任何不一致的地方。您也可以使用 sysinternals 中的 ProcMon 并监控文件访问(您可以过滤您的进程名称)