2012-05-18 14 views
11

मैं हाल ही में एक सी # परीक्षण शुरू कर दिया ODP.NET (Oracle.DataAccess 4.112.3) का उपयोग करता है (4.0) अनुप्रयोगसी # ODP.NET लोड फ़ाइल या विधानसभा

मैं किसी भी मंच को लक्षित करने और प्रकाशित करने के लिए इस परियोजना की स्थापना की एप्लिकेशन।

मैं प्राप्त जब मैं क्लाइंट मशीन पर कार्यक्रम चलाने:

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. 

जैसा मैंने कहा कि मैं 'किसी भी सीपीयू' लक्षित किया है और मैं भी अनुप्रयोग के साथ Oracle.DataAccess विधानसभा एम्बेडेड है।
मुझे यह त्रुटि उन मशीनों पर मिलती है जिनमें ओरेकल क्लाइंट के साथ-साथ मशीनें भी नहीं होती हैं।

किसी भी मदद की सराहना की है।

+0

आपने की तरह काम करना चाहिए ओरेकल संदर्भ के गुणों पर सही 'कॉपी स्थानीय' को सही में बदल दिया? – carny666

उत्तर

18

जैसा मैंने कहा कि मैं लक्षित किया है 'कोई भी सीपीयू'

इस संभावित समस्या है।

ओरेकल.डाटाएप के पास 32bit और 64bit सिस्टम के लिए अलग-अलग संस्करण हैं। यदि आप 32 बिट मशीन पर विकास कर रहे हैं, और फिर 64 बिट ओएस पर तैनाती कर रहे हैं, तो आपको यह संदेश प्राप्त होगा।

आप आसानी से x86 को लक्षित करने के लिए अपना आवेदन बनाकर और डेटा एक्सेस घटकों के 32 बिट संस्करण को तैनात करके आसानी से काम कर सकते हैं।

+0

वह था, जल्दी मदद के लिए बहुत बहुत धन्यवाद! – Wjdavis5

+1

वेब अनुप्रयोगों के लिए इसका मतलब है कि ऐप पूल को 32-बिट चलाना चाहिए और 32-बिट ओरेकल क्लाइंट की आवश्यकता है। '4.112.3' का उपयोग करते समय, 64-बिट वेब सर्वर और ऑरैक क्लाइंट के लिए समाधान क्या है? स्थानीय कॉपी 32-बिट है। बूम। इसके बिना, ग्राहक की GAC'd प्रति '4.112.2' प्रतिलिपि बनाई जाती है। बूम। बिन में 64-बिट नए संस्करण की प्रतिलिपि बनाते हुए कहते हैं कि इसके प्रदाता कारखाने में एक इंटरफ़ेस गुम है। क्या यह पुराने GAC_64 संस्करण को फिर से उपयोग करने का प्रयास कर रहा है? या 'bin.config' से कुछ गुम है जो इसे' बिन' प्रतिलिपि में नए प्रदाता का उपयोग करने के लिए कहता है? –

+0

धन्यवाद, यह मेरी समस्या हल हो गया। :) – Pirate

0

आपको शायद यह जांचना चाहिए कि Oracle.DataAccess असेंबली में आपकी मशीन में कोई निर्भरता है और यह क्लाइंट मशीन में गायब है।

4

रीड कॉपसी ने कहा, दो अलग-अलग डीएलएल हैं। जब आप ANYCpu को लक्षित करते हैं, तो आपका ऐप 64 बिट मशीन पर 64 बिट में और 32 बिट मशीन पर 32 बिट चलाएगा। इसलिए, यदि आप चाहते हैं कि आपका ऐप 32 या 64 बिट और पर किसी भी सीसीपीयू मोड में चलाना चाहे, तो आपको Oracle.DataAccess के संदर्भ को विशिष्ट संस्करण = झूठी और स्थानीय = झूठी प्रतिलिपि में बदलना चाहिए। जब आप किसी ग्राहक को तैनात करते हैं, तो में उनके जीएसी में ऑरैकल डीएल होना चाहिए और इसे स्वचालित रूप से सही संस्करण चुनना चाहिए।

0
शीर्ष परिवर्तन ऑप्ट X64 डिबग करने पर किसी भी cpu डिबग से

, हालांकि X64 के लिए आंतरिक रूप से किसी भी CPU अंक केवल लेकिन वह काम नहीं करता, 64 के लिए इसे बदलने के लिए कोशिश करते हैं और यह एक आकर्षण

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