【问题标题】:getting TypeInitializationException Oracle.DataAccess获取 TypeInitializationException Oracle.DataAccess
【发布时间】:2018-09-16 04:07:52
【问题描述】:

我有 Windows 10 机器。我正在运行一个引用Oracle.DataAccess.dll 的c# 项目。我已经安装了 ODAC112012_32Bit。有一个 dll NexFen.FirmLoad 可以访问 Oracle dll。当我运行项目时,出现以下错误:

System.TypeInitializationException:类型初始化器 'NexGen.FirmLoad.AppUtils' 抛出异常。 ---> System.IO.FileLoadException:无法加载文件或程序集 'Oracle.DataAccess,版本=4.112.3.0,文化=中性, PublicKeyToken=89b483f429c47342' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)---> System.IO.FileLoadException:无法加载文件或程序集 'Oracle.DataAccess,版本=4.112.1.2,文化=中性, PublicKeyToken=89b483f429c47342' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)--- 内部结束 异常堆栈跟踪 --- 在 NexGen.FirmLoad.AppUtils..cctor()
--- 内部异常堆栈跟踪结束 --- 在 NexGen.FirmLoad.LoadFirmware.d__0.MoveNext()

【问题讨论】:

  • 检查您的程序是否为 32-bit(因为您正在尝试加载 32-bit 程序集)
  • 我尝试了 32 位和 64 位程序,但得到相同的错误。

标签: c# oracle


【解决方案1】:

检查您的项目是否满足以下所有条件:

  • 您已安装 Oracle 客户端(例如 Oracle Instant Client)
  • Oracle.DataAccess.dll 和 Oracle 客户端以及您的应用程序的编译目标具有全部相同的架构(即 32 位与 64 位)
  • Oracle.DataAccess.dll 的版本与您的 Oracle 客户端的版本相同(即使是次要版本也必须匹配)。您的错误信息表明版本4.112.3.04.112.1.2,可能是您的问题。检查 GAC 和政策中已安装的版本。

【讨论】:

  • 我在 GAC 中检查了安装的版本。在 GAC-32 中是 4.112.1.2,在 GAC-64 中是 4.112.3.0,我已经卸载了它,因为我的项目指的是 4.112.1.2 版本。
  • @kanika,如果您喜欢使用 32 位和 64 位,请查看此解决方案:stackoverflow.com/questions/24104210/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 2023-03-08
相关资源
最近更新 更多