2017-04-12 56 views
0

我運行:錯誤加載DLL文件在Windows 10 C#ODP.NET

  1. 的Windows 10家
  2. Oracle數據庫11g企業版11.2.0.1 - 64位版本
  3. Visual Studio速成2013

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

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

  2. 我聯繫服務Oracle.DataAccess.dll在目錄C:\程序\戴夫\產品\ 11.2.0 \ dbhome_1 \ ODP.NET \ BIN \ 2.X \

我的代碼:

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()); 

我已經在過去使用Visual STDIO快遞2008和Oracle 10g在Windows XP下使用這種成功,認爲這將是非常就像以前一樣簡單,但顯然不是。

有沒有其他人遇到這個錯誤,並希望找到它一個解決方法嗎?我會非常感謝任何幫助或信息。

非常感謝!

-Dave。

+0

您需要明確地構建x86或x64。同時檢查ODP.NET的製作平臺。 –

+0

驗證您的應用程序的體系結構(32位或64位)與您的Oracle客戶機相同, ODP.NET程序集。 –

+0

檢查答案:http://stackoverflow.com/questions/659341/the-provider-is-not-compatible-with-the-version-of-oracle-client#25412992 –

回答

0

在某些情況下,.NET DLL沒有在64位系統靶向x86和x64平臺(如Microsoft Expression Encoder的)。啓動調試時可能會發生此錯誤(不確定它是否與ODP.NET相同)。解決方案是將項目中的構建設置更改爲目標x86而不是任何CPU。

0

感謝大家發佈這麼多有用的意見。

我嘗試以下的建議更改目標CPU的x86,而不是任何CPU(我也試過64位),但它並沒有區別。

但是想着這個話題讓我思考,也許這是一個古老的ODP.NET DLL,而不是使用.NET的電流/最新版本兼容。

所以(在性能和應用程序選項卡,我改變了目標NET框架是.NET 3.5,果然是解決我的問題!

我現在能夠讀取和寫入數據,並從從C#數據庫!我又感到非常高興和欣慰的是,它現在的工作。

感謝大家爲他們帶領我到解決這一問題的援助!:-)

-D。