इसलिए जैसा कि मैं इसे समझता हूं, मुद्दा यह था कि जबकि Oracle.DataAccess.dll ऐप के समान निर्देशिका में था, यह अपने निचले स्तर के घर (oci, et al) नहीं ढूंढ सका, इसलिए संगतता त्रुटि।
यह पता चला है कि यदि आप चाहते हैं कि कोई एप्लिकेशन ODAC 11 xcopy परिनियोजन के साथ काम करे, भले ही उपयोगकर्ता ने अपनी मशीन पर और क्या स्थापित किया हो, आपको 2 काम करने होंगे:
- प्रक्रिया के लिए पथ पर्यावरण चर सेट करें। (मैं पहले से ही ऐसा कर रहा था।)
-
प्रक्रिया के लिए ORACLE_HOME पर्यावरण चर सेट करें। (मैं यह नहीं कर रहा था।)
Environment.SetEnvironmentVariable("PATH", Environment.CurrentDirectory + "\\oracle\\11.1\\odac;" + Environment.CurrentDirectory + "\\oracle\\11.1\\odac\\bin;", EnvironmentVariableTarget.Process); Environment.SetEnvironmentVariable("ORACLE_HOME", Environment.CurrentDirectory + "\\oracle\\11.1\\odac", EnvironmentVariableTarget.Process);
संपादित करें: यह भी ध्यान रखना महत्वपूर्ण है कि ओरेकल इस त्रुटि को न केवल पर्यावरणीय मुद्दों के लिए फेंक देगा, बल्कि लक्ष्य मशीन पर फाइलों में से एक गायब होने पर भी। पर्यावरण सेटिंग्स के बावजूद मुझे अन्य मशीनों पर भी यही त्रुटि मिली क्योंकि मेरे पास "बिन" नामक निर्देशिकाओं को अनदेखा करने के लिए सबवर्जन सेट था, इसलिए ओराओप्स डीएलएल क्लाइंट को कॉपी नहीं किया जा रहा था।