当我尝试运行一个简单的程序来访问oracle时,我得到了以下消息
无法加载文件或程序集“Oracle.DataAccess,Version=2.111.7.20,Culture=neutral,PublicKeyToken=89b483f429c47342”或其依赖项之一。系统找不到指定的文件。
我检查了\windows\assembly,它在那里,但不在GAC (gacutil -l
)中。我不能添加到GAC (gacutil -i [path]
。我收到“未知错误”。
有没有人有过同样的经历?
发布于 2010-02-24 07:46:02
我将从我刚刚在Windows Server2008 R2上经历的64位操作系统上给出答案。我得到的库的应用程序套件是使用Oracle3.5DLL库和较旧的.net库开发的,我被困住了,因为我安装了来自oracle的较新的x64客户端。
我发现的结果如下:安装Oracle for Windows Server2008的最新x64客户端。我相信这应该是2.7.0客户端。当您选择安装时,请确保执行自定义并选择.NET库。配置您的tnsnames文件,并根据您的数据源测试您的tnsping。
接下来,如果您运行的是32位应用程序,请为32位安装相同版本的客户端。此外,请遵循相同的安装例程,并选择相同的主目录。
完成后,您将发现您有一个具有两个客户端目录(Client1和Client2)的应用程序/产品。
如果您导航到windows/assemblies目录,您会发现您有一个对Oracle.DataAccess.dll (x2)的引用,一个用于x86,一个用于AMD64。
现在,取决于你是有开发人员还是自己在机器上开发,你在这里可能是可以的,但是,如果他们使用的是旧的驱动程序,那么你需要执行最后一步。
导航到app\name\product\version\client_1\odp.net\publisher policy\2.x目录。此处包含两个策略文件。使用gacutil /i将Policy.2.111.Oracle.DataAccess.dll安装到GAC中。这会将遗留oracle ODP调用重定向到较新的版本。因此,如果有人使用10g客户端进行开发,它现在将与11客户端一起工作。
仅供参考-某些用户可能正在安装带有2.111.7.20的最新ODP.NET。主oracle客户端本身附带2.111.7.0.我使用7.20没有任何成功,但7.0客户端没有任何问题。
发布于 2010-11-17 06:21:49
我是用x64编译的,用x86就可以解决问题
发布于 2011-09-26 16:12:54
正如在第一个答案中提到的,有32/64位的场景为开发人员引入了构建和运行时陷阱。
解决方案总是尝试正确的:你安装了什么样的软件和操作系统,。
有关Oracle驱动程序和解决方案的一小部分场景列表,您可以访问此post。
https://stackoverflow.com/questions/1953676
复制相似问题