簡體   English   中英

無法加載'Oracle.DataAccess'程序集

[英]'Oracle.DataAccess' assembly not load

我已經在電腦上安裝了odac。我安裝了Visual Studio 2012.ORACLE.Data.Access dll在我的refrence中可用,但出現以下錯誤

Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.

我如何擺脫這個問題。我正在本地運行此應用程序

錯誤消息的重要部分是試圖加載格式錯誤的程序。 這是由兩個問題之一引起的:

  1. Oracle.DataAccess.dll文件以32位編譯,而您的應用程序也編譯為64位
  2. Oracle.DataAccess.dll文件以64位編譯,而您的應用程序則編譯為32位

要解決此問題,如果DLL是32位,則將應用程序的CPU體系結構目標更改為x86,如果DLL是64位,則將其更改為x64。

從Microsoft文檔中獲取System.BadFormatException

當動態鏈接庫(.dll文件)或可執行文件(.exe文件)的文件格式不符合公共語言運行庫期望的格式時,將引發此異常。 特別是,在以下情況下會引發異常:

  • .NET Framework實用程序的早期版本(例如ILDasm.exe或installutil.exe)與通過更高版本的.NET Framework開發的程序集一起使用。

    若要解決此異常,請使用與用於開發程序集的.NET Framework版本相對應的工具版本。 這可能需要修改Path環境變量或為正確的可執行文件提供完全限定的路徑。

  • 您嘗試加載非托管動態鏈接庫或可執行文件(例如Windows系統DLL),就像它是.NET Framework程序集一樣。 下面的示例通過使用Assembly.LoadFile方法加載Kernel32.dll來說明這一點。

  • DLL或可執行文件以64位程序集的形式加載,但包含32位功能或資源。 例如,它依賴於COM互操作或調用32位動態鏈接庫中的方法。

    要解決此異常,請將項目的Platform target屬性設置為x86(而不是x64或AnyCPU)並重新編譯。

  • 應用程序的組件是使用.NET Framework的不同版本創建的。 通常,當使用.NET Framework 1.0或.NET Framework 1.1開發的應用程序或組件嘗試加載使用.NET Framework 2.0 SP1或更高版本開發的程序集時,或者當開發了應用程序時,會發生此異常。使用.NET Framework 2.0 SP1或.NET Framework 3.5嘗試加載使用.NET Framework 4或更高版本開發的程序集。 BadImageFormatException可能會報告為編譯時錯誤,或者可能在運行時引發異常。 下面的示例定義一個StringLib類,該類具有單個成員ToProperCase,並且位於名為StringLib.dll的程序集中。

具體來說,第3項是問題的根本原因。

暫無
暫無

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

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