2016-02-19 68 views
0

我最近採取了應用程序開發人員的職位,但沒有太多經驗,我無法確定問題的根源。我已經通過論壇進行搜索,並且無法爲我的具體問題得出確鑿的答案,因此我提出了一個問題。如果我冒犯了任何人或破壞了任何規則,我對此網站不熟悉,所以我很抱歉。Oracle.DataAccess.dll提供程序和dll不兼容

我有幾個需要使用oracle.dataaccess.dll的應用程序。我已經按照我的僱主的要求安裝了oracle客戶端x32。當我嘗試運行任何需要oracle.dataaccess.dll文件的應用程序時,遇到各種錯誤。

大多數應用程序使用4.xx.xx.xx版本的dll,它不會出現在我的oracle客戶端(我假設它是因爲我安裝了32位)。當我嘗試使用32位版本我得到各種錯誤:

  1. 提供商是不與版本Oracle客戶端的

兼容
  • 無法加載文件或程序集。 'Oracle.DataAccess.dll'或其中一個依賴項。試圖加載具有不正確格式的程序。
  • 提供商可能無法安裝。
  • 如果我嘗試使用生產服務器上使用的oracle.dataaccess.dll,我會得到相同的錯誤。

    1. 什麼是「供應商」,我怎麼能弄清楚我已經安裝了哪個(些)?

    2. 我是否應該將任何這些dll存儲在我的GAC中?

    3. 我完全不知道我需要從哪裏出發,因爲我已經嘗試了我所知道的一切。我甚至卸載了我的Oracle客戶端並重新安裝無濟於事。請,任何信息將指向我一個很好的教程或如何使用oracle.dataaccess將不勝感激。

    再次,我對任何麻煩事先道歉。

    +0

    我有這個同樣的問題,這取決於如果這是一個Windows或Web應用程序..你需要在項目級別更改屬性來打造作爲'x86'的應用程序不使用'x64'它不會工作..通常它應該與構建被設置爲AnyCpu一起使用。但Oracle的64位客戶端存在重大問題,所以我們使用穩定的32位客戶端,它的工作方式就像魅力一樣,不會將這些內容存儲在GAC中。將using語句添加到.cs文件的標頭中,以及手動添加參考到項目 – MethodMan

    +0

    一旦你將其添加到項目去dll並將'CopyLocal = false; l屬性更改爲CopyLocal = true' – MethodMan

    +0

    請檢查以下答案:http://stackoverflow.com/questions/659341/the-提供程序與Oracle客戶端的版本不兼容#25412992 –

    回答

    0

    一些通用的點:

    • ODP.NET(即Oracle.DataAccess.dll)需要Oracle客戶端安裝。獨立DLL不起作用。
    • Oracle.DataAccess.dll的架構(即32比64比特)必須與已安裝的Oracle客戶端的體系結構和應用程序的體系結構相匹配。
    • 版本(例如2.x4.xOracle.DataAccess.dll)必須與應用程序的.NET編譯目標匹配。如果您在目標2.0,3.0或3.5上編譯,則必須安裝版本2.x。對於編譯目標4或更高版本,您必須安裝版本4.x
    • 版本(例如,x.111,x.112x.121等)應該與已安裝的Oracle客戶端版本匹配。

    關於你的問題:

    的提供者是DLL Oracle.DataAccess.dll。它可以是應用程序二進制文件夾中的本地副本,也可以安裝在GAC中。

    無論您是否使用GAC都無關緊要。我個人更喜歡使用GAC,但您也可以提供本地副本。

    您可以詢問與gacutil.exe工具安裝的提供:

    C:\>gacutil /l Oracle.DataAccess 
    Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.18020 
    Copyright (c) Microsoft Corporation. All rights reserved. 
    
    The Global Assembly Cache contains the following assemblies: 
        Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64 
        Oracle.DataAccess, Version=2.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64 
        Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86 
        Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86 
        Oracle.DataAccess, Version=2.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86 
        Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64 
        Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64 
        Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86 
    
    Number of items = 8 
    
    C:\> 
    
    +0

    我還想提及,我感謝您指向我以前的某篇文章。非常感謝您的幫助Wernfried! –

    +0

    當我安裝我的32位客戶端時(按照我的僱主),我導航到「client_1 \ odp.net \ bin」文件夾,但我沒有看到4.x文件夾,只有2.x.我需要使用4.x dll,因爲我在所有應用程序的4.x目標框架上進行編譯,但是我不確定如果它沒有與我的客戶端一起安裝,我怎麼找到它。有什麼建議?提前致謝。 –

    +0

    你安裝了哪個Oracle版本? ODP.NET 4.x(32位)由Oracle版本11.2.0.1.2引入,請參閱http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html。檢查安裝程序選項或手動安裝4.x版。 –