C# ODP.NET 加载文件或程序集

本文关键字:程序集 文件 加载 ODP NET | 更新日期: 2023-09-27 18:34:41

我最近开始在使用 ODP.NET(Oracle.DataAccess 4.112.3(的C#(4.0(应用程序上进行测试。

我将此项目设置为面向任何平台并发布应用程序。

当我在客户端计算机上运行该程序时,我收到:

Could not load file or assembly 'Oracle.DataAccess, Version=4.112.3.0,Culture=neutral,
PublicKeyToken=89b483f429c47342' or one of its dependencies. An attempt was made to load 
a program with an incorrect format.

就像我说的,我的目标是"任何CPU",并且我还在应用程序中嵌入了Oracle.DataAccess程序集。
我在安装了 Oracle 客户端的计算机上以及未安装的计算机上收到此错误。

任何帮助,不胜感激。

C# ODP.NET 加载文件或程序集

就像我说的,我的目标是"任何CPU">

这可能是问题所在。

Oracle.DataAccess 为 32 位和 64 位系统提供了单独的版本。 如果在 32 位计算机上进行开发,然后在 64 位操作系统上部署,则会收到此消息。

通过将应用程序构建为面向 x86 并部署 32 位版本的数据访问组件,可以轻松解决此问题。

正如 Reed Copsey 所说,有两个不同的 DLL。以 ANYCpu 为目标时,你的应用将在 64 位计算机上以 64 位运行,在 32 位计算机上以 32 位运行。因此,如果您希望您的应用程序在 32 位或 64 位上运行并在 AnyCPU 模式下运行,则应将 Oracle.DataAccess 的引用更改为特定版本=假,并复制本地 = 假。部署到客户端时,他们的 GAC 中应该有预言机 dll,并且它应该自动选取正确的版本。

也许应该检查 Oracle.DataAccess 程序集在您的计算机中是否有任何依赖项,以及它在客户端计算机中是否缺失。

从调试 顶部的任何 cpu 都会更改调试 X64 的选项,尽管内部任何 CPu 都仅指向 X64 但这不起作用,请尝试将其更改为 x64,它应该像魅力一样工作