一些通用的點:
- ODP.NET(即
Oracle.DataAccess.dll
)需要Oracle客戶端安裝。獨立DLL不起作用。
Oracle.DataAccess.dll
的架構(即32比64比特)必須與已安裝的Oracle客戶端的體系結構和應用程序的體系結構相匹配。
- 版本(例如
2.x
或4.x
的Oracle.DataAccess.dll
)必須與應用程序的.NET編譯目標匹配。如果您在目標2.0,3.0或3.5上編譯,則必須安裝版本2.x
。對於編譯目標4或更高版本,您必須安裝版本4.x
- 版本(例如,
x.111
,x.112
,x.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:\>
我有這個同樣的問題,這取決於如果這是一個Windows或Web應用程序..你需要在項目級別更改屬性來打造作爲'x86'的應用程序不使用'x64'它不會工作..通常它應該與構建被設置爲AnyCpu一起使用。但Oracle的64位客戶端存在重大問題,所以我們使用穩定的32位客戶端,它的工作方式就像魅力一樣,不會將這些內容存儲在GAC中。將using語句添加到.cs文件的標頭中,以及手動添加參考到項目 – MethodMan
一旦你將其添加到項目去dll並將'CopyLocal = false; l屬性更改爲CopyLocal = true' – MethodMan
請檢查以下答案:http://stackoverflow.com/questions/659341/the-提供程序與Oracle客戶端的版本不兼容#25412992 –