【问题标题】:Error loading dll for ODP.NET in Windows 10 C#在 Windows 10 C# 中为 ODP.NET 加载 dll 时出错
【发布时间】:2017-04-13 05:10:48
【问题描述】:

我正在跑步:

  1. Windows 10 家庭版
  2. Oracle Database 11g 企业版 11.2.0.1 - 64 位版本
  3. Visual Studio Express 2013

我想编写一个简单的 C# 应用程序来从 Oracle 数据库中读取数据并想使用 ODP.NET。但是,在运行程序时,我会立即收到运行时错误。

  1. 我开始了一个新的 Windows 窗体项目。

  2. 我在目录 c:\app\Dave\product\11.2.0\dbhome_1\ODP.NET\bin\2.x\ 中链接了服务 Oracle.DataAccess.dll

我的代码是:

using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace testapp_2
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

代码:

using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;  

namespace testapp_2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            OracleConnection conn = new OracleConnection();
        }
    }
}

错误是:

无法加载文件或程序集“Oracle.DataAccess,版本=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' 或其之一 依赖关系。试图加载一个不正确的程序 格式。

在调试模式下运行时,程序在以下行停止:

Application.Run(new Form1());

我过去曾在 Windows XP 下的 Visual Stdio Express 2008 和 Oracle 10g 上成功使用过它,并认为这会像以前一样非常简单,但显然不是。

是否有其他人遇到此错误并希望找到解决方法?如果有任何帮助或信息,我将不胜感激。

非常感谢!

-戴夫。

【问题讨论】:

  • 您需要明确地为 x86 或 x64 构建。还要检查 ODP.NET 是针对哪个平台制作的。
  • 验证您的应用程序的架构(32 位或 64 位)是否与您的 Oracle 客户端相同。 ODP.NET 程序集。

标签: c# oracle


【解决方案1】:

在某些情况下,.net DLL 不针对 64 位系统下的 x86 和 x64 平台(如 Microsoft Expression Encoder)。启动调试时可能会出现此错误(不确定 ODP.NET 是否相同)。解决方案是将项目中的构建设置更改为针对 x86 而不是 Any CPU。

【讨论】:

    【解决方案2】:

    感谢大家发布这么多有用的 cmets。

    我尝试按照建议将目标 CPU 更改为 x86 而不是 Any CPU(我也尝试过 x64),但没有任何区别。

    但考虑到这个话题让我想到这可能是一个旧的 ODP.NET dll,与当前/最新版本的 .NET 不兼容。

    所以(在“属性”和“应用程序”选项卡中,我将目标 .NET 框架更改为 .NET 3.5,果然解决了我的问题!

    我现在可以从 C# 中读取和写入数据库中的数据了!现在可以正常工作了,我感到非常高兴和宽慰。

    再次感谢大家帮助我解决这个问题! :-)

    -D.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多