關於未能負載檔案或程式集“Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342”

來源:互聯網
上載者:User

今天做了個小程式放在伺服器上的運行資料查詢的時候出現 “關於未能負載檔案或程式集“Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一個依賴項。試圖載入格式不正確的程式”的錯誤提示!當時第一反應是由於版本不對造成的,由於本機測試是通過的(本機 32位WIN7) 伺服器(64位  windowServer2003),立即替換成64位的Oracle.DataAccess.dll ,重新運行還是出現錯誤!果斷ctrl+c,ctrl+v百度,找到以下解決方案:

1.

如果碰巧您又在用64位的作業系統(比如win2008 r2),開發工具又是最先進的vs.net 2010 sp1,但是死活在代碼就是串連不上oracle,一直報一些奇怪的錯誤:比如“Data Provider找不到”啦,“Oracle.DataAccess.Client無法載入”啦之類,正在一籌莫展大聲咆哮:“天理,有木有啊,有木有!”之時,恭喜你,多半是遇到了x64/x64的版本問題。(我今天花了近一上午的時間才弄明白問題所在) odp.net安裝後,預設會在GAC中部署程式集Oracle.DataAccess,如果你安裝的是x86版本,GAC中的就是x86;如果你安裝的x64版本,GAC中的就是AMD64版本。 檢測本機GAC中是否有Oracle.DataAccess程式集並查看版本的方法如下:在vs.net命名行視窗下,輸入gacutil.exe /l Oracle.DataAccess如果看到類似下面的結果: D:\app\x86\Microsoft Visual Studio 10.0\VC>gacutil.exe /l Oracle.DataAccess Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.1 Copyright (c) Microsoft Corporation.  All rights reserved. The Global Assembly Cache contains the following assemblies:   Oracle.DataAccess, Version= 2.112.2.0 , Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64   Oracle.DataAccess, Version=2.112.2.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.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86 Number of items = 4表明你的機器上安裝了4個版本的Oracle.DataAccess,分別對應於.net 2.0以及.net 4.0的32位/64位版本如果缺少相關的版本,可以先到oracle官網download,下面以64位odp.net為例: 1、下載完成後,將其解壓到某個目錄,比如E:\software\oracle11g\ODP.Net,然後鍵入以下命令: E:\software\oracle11g\ODP.Net\x64>install.bat all c:\odp.net myhome (install all components) 上述命令將自動把所有檔案複製到c:\odp.net下 2、然後轉到c:\odp.net下,鍵入命令: c:\odp.net>configure.bat all myhome (configure all component)將自動向GAC中部署相應的程式集.然後在vs2010裡,添加引用時,應該就能看到Oracle.DataAccess的二個版本總之一句話:要跑64位的.Net程式,就必須用64位的odp.net,要跑32位的.Net程式,就必須用32位的odp.net,且machine.config中要有相應的provider節點。最後給出odp.net32位與64位的:64位http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html32位http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html 2.本人以上方法全部測試,還是報錯!於是想了想是不是編譯平台選擇有問題,果不其然!找到問題所在,改之 運行成功!       
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.