簡體   English   中英

在Windows 10 C#中為ODP.NET加載DLL時出錯

[英]Error loading dll for ODP.NET in Windows 10 C#

我在跑步:

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

我想編寫一個簡單的C#應用​​程序以從Oracle數據庫讀取數據,並想使用ODP.NET。 但是,在運行程序時,我會立即遇到運行時錯誤。

  1. 我開始了一個新的Windows Forms項目。

  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,Version = 2.112.1.0,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其依賴項之一。 試圖加載格式錯誤的程序。

在調試模式下運行時,程序在以下行停止:

Application.Run(new Form1());

過去,我已經在Windows XP下成功地在Visual Stdio Express 2008和Oracle 10g中成功使用了此功能,並認為這將像以前一樣非常簡單,但顯然不是。

其他人是否遇到過此錯誤,並希望找到解決方法? 對於任何幫助或信息,我將不勝感激。

非常感謝你!

戴夫。

在某些情況下,.net DLL在64位系統下不能同時面向x86和x64平台(例如Microsoft Expression Encoder)。 啟動調試時可能會發生此錯誤(不確定ODP.NET是否相同)。 解決方案是將項目中的構建設置更改為x86而不是Any CPU。

感謝大家發表這么多有用的評論。

我嘗試按照建議將目標CPU更改為x86而不是Any CPU(我也嘗試過x64),但沒有區別。

但是考慮到該主題后,我想到了這可能是舊的ODP.NET dll,並且與.NET的當前/最新版本不兼容。

因此(在“屬性”和“應用程序”選項卡中,我將目標.NET框架更改為.NET 3.5,並且可以解決我的問題!

現在,我可以從C#向數據庫讀寫數據了! 我很高興並為它現在正在工作感到欣慰。

再次感謝大家為我提供的幫助,以解決這個問題! :-)

-D。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM