2012-09-22 11 views
5

लोड नहीं हो सका, मुझे Oracle.DataAccessWPF में समस्या हो रही है। मैंने बिना किसी समस्या के Oracle.DataAccess v4.0 का उपयोग किया। लेकिन अब यह संस्करण 4.112 में अपडेट किया गया है और जब मैं WPF में इस संस्करण का संदर्भ जोड़ता हूं तो डिज़ाइनर लोड नहीं किया जा सका। यह मुझे निम्न त्रुटि देता है:Oracle.DataAccess संस्करण

System.BadImageFormatException 
Could not load file or assembly 'Oracle.DataAccess, 
Version=4.112.3.0, Culture=neutral, 
PublicKeyToken=89b483f429c47342' or one of its dependencies. 
An attempt was made to load a program with an incorrect format. 

कृपया ध्यान दें कि प्रोग्राम बिना किसी समस्या के चलता है। मैंने पढ़ा है कि यह गुणों में "लक्ष्य सीपीयू" के कारण हो सकता है। मैंने x64 और x86 दोनों का परीक्षण किया लेकिन कुछ भी नहीं बदला। इस समस्या का समाधान किस प्रकार से किया जा सकता है। अग्रिम धन्यवाद

उत्तर

6

समस्या मेरे Oracle.DataAccess.dll फ़ाइल के साथ थी। मैंने ओडीएसी 11 एक्सकॉपी डाउनलोड किया है और Oracle.DataAccess.dll को \ odp.net4 \ odp.net \ bin \ 4 से अपने ओरेकल क्लाइंट के \ odp.net \ bin \ 4 फ़ोल्डर में कॉपी किया है और डीएलएस को प्रतिस्थापित किया है। अब यह एक आकर्षण की तरह काम करता है।

आशा है कि यह किसी

+0

हाय, आदिल। ओडीएसी 11 एक्सकॉपी का कौन सा संस्करण आपने डाउनलोड किया था?मैंने ओडीएसी 11 एक्सकॉपी रिलीज 5 के साथ प्रयास किया और अब यह मेरे लिए काम कर रहा है –

+0

हाय @ जैकडैनियल। मुझे खुशी है कि यह आपके लिए काम करता है। मुझे खेद है, लेकिन मुझे अब याद नहीं है –

3

मुझे निर्भरता डीएलएल को Oracle.DataAcces पर निर्भर करके हल किया गया एक ही समस्या का सामना करना पड़ा। इस लिंक को जांचें What is the minimal setup required to deploy a .NET application with Oracle client 11?

आशा है कि इसे मदद करनी चाहिए।

+0

मुझे क्या करना चाहिए? इन सभी डीडीएल को मेरे सभी डब्ल्यूपीएफ अनुप्रयोगों में कॉपी करें? –

+0

हां। इसे डीबग या रिलीज फ़ोल्डर में रखें। इसे संदर्भित करने की कोई आवश्यकता केवल Oracle.DataAccess.dll –

+0

ठीक से रखने की आवश्यकता है। धन्यवाद। लेकिन वे WPF डिज़ाइन मोड के बारे में बात नहीं करते हैं, वे प्रोग्राम को तैनात या स्थापित करने के बारे में बात कर रहे हैं। परंतु मै प्रयत्न करुंगा। उम्मीद है कि यह –

0

किसी मैं जिस तरह से इस समस्या है कई बार के साथ पेश किया है करने के लिए उपयोगी होगा। नीचे कुछ PowerShell है जो मैं नियमित रूप से एक ऐप को तैनात करने के लिए उपयोग करता हूं।

$target = "\\SERVER\c$\PROJECT" 
$oracleBin = "C:\oracle\product\11.2.0\client_1\BIN\" 
$projectHome = "C:\Users\USER\Code\CSharp\PROJECT\bin\Release\" 
$files = @(
($oracleBin + "oci.dll"), 
($oracleBin + "orannzsbb11.dll"), 
($oracleBin + "oraocci11.dll"), 
($oracleBin + "OraOps11w.dll"), 
($projectHome + "EntityFramework.dll"), 
($projectHome + "EntityFramework.xml"), 
($projectHome + "Oracle.DataAccess.dll"), 
($projectHome + "PROJECT.exe") 
#,($projectHome + "PROJECT.exe.config") 
) 
foreach($f in $files) { 
    copy-item $f $target 
} 

दो टिप्पणियां मैं किसी को इस समस्या को हल करने के लिए संघर्ष के लिए जोड़ सकते हैं:

  1. आप सही ओरेकल घर मिल सकता है (यानी जहाँ आपके client_1 \ बिन है), तो आप जहां संदर्भित कर रहे हैं के आधार पर विजुअल स्टूडियो के भीतर से Oracle.DataAccess.dll। मेरे पास कई ओरेकल घर हैं इसलिए यह एक मुद्दा रहा है जिसे मुझे कुछ बार दूर करना पड़ा।
  2. ओरेकल 11 जी के लिए उपरोक्त काम करता है। यदि आपके पास ओरेकल 12 सी है, तो मेरा मानना ​​है कि एक समान प्रक्रिया काम करेगी, लेकिन कुछ फ़ाइल नाम * 11.dll से * 12.dll में बदल जाते हैं।

enter image description here

संबंधित मुद्दे