關於未能加載文件或程序集“Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一個依賴項。試圖加載格式不正確的程序的解決方案


今天做了個小程序放在服務器上的運行數據查詢的時候出現 “關於未能加載文件或程序集“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位下載地址
32位下載地址
 
2.本人以上方法全部測試,還是報錯!於是想了想是不是編譯平台選擇有問題,果不其然!
找到問題所在,改之
運行成功!
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 未能加載文件或程序集“Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" 未能加載文件或程序集“**, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一個依賴項。試圖加載格式不正確的程序。 vs2017 x64 ibatis.net 平台調用 Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342 x64 未能加載文件或程序集“AxInterop.iPlotLibrary,Version=1.0.0.0,culture=neutral,PublicKeyToken=null”,試圖加載格式不正確的程序 未能加載文件或程序集“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73”或它的某一個依賴項 未能加載文件或程序集“XXX”或它的某一個依賴項。試圖加載格式不正確的程 C# 所生成項目的處理器架構“MSIL”與引用“Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86”的處理器架構“x86”不匹配。這種不匹配可能會導致運行時失敗。 未能加載文件或程序集“Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一個依賴項。系統找不到指定的文件。 未能加載文件或程序集“xxx, Version=x.x.x.x, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx”或它的某一個依賴項。系統找不到指定的文件 未能加載文件或程序集“Spire.Pdf, Version=4.8.8.2020, Culture=neutral, PublicKeyToken=663f351905198cb3”或它的某一個依賴項。未能授予最小權限請求
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM