यहाँ मेरी Xcopy समाधान है।
मैं भी
(https://jeremybranham.wordpress.com/2011/04/25/oracle-instant-client-with-odp-net/#comment-181)
पर पर पोस्ट किया।
लेकिन मुझे लगता है कि मैं यहां अपने मुद्दों को स्वरूपित किए बिना अपना एक्सएमएल पोस्ट कर सकता हूं।
Nuget "packages.config"
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CommonServiceLocator" version="1.0" targetFramework="net35" />
<package id="EnterpriseLibrary.Common" version="5.0.505.0" targetFramework="net35" />
<package id="EnterpriseLibrary.Data" version="5.0.505.0" targetFramework="net35" />
<package id="EntLibContrib.Data.OdpNet" version="5.0.505.0" targetFramework="net35" />
<package id="Unity" version="2.1.505.2" targetFramework="net35" />
<package id="Unity.Interception" version="2.1.505.2" targetFramework="net35" />
</packages>
app.config
(ध्यान दें नीचे <clear />
टैग। इस या की जरूरत नहीं किया जा सकता है, लेकिन मैं समझ यह बाद से उन्हें बाहर खाली करने के लिए बेहतर था आप नहीं जानते कि machine.config फ़ाइल में क्या हो सकता है)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<dataConfiguration defaultDatabase="OracleMainConnectionString">
</dataConfiguration>
<connectionStrings>
<add name="OracleMainConnectionString"
connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyOracleServerName)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=MyServiceName)));User ID=MyUserName;Password=MyPassword;"
providerName="Oracle.DataAccess.Client" />
</connectionStrings>
<appSettings>
<add key="ExampleKey" value="ExampleValue" />
</appSettings>
<system.data>
<DbProviderFactories>
<clear />
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description=".Net Framework Data Provider for Oracle" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<add name="EntLibContrib.Data.OdpNet" invariant="EntLibContrib.Data.OdpNet" description="EntLibContrib Data OdpNet Provider" type="EntLibContrib.Data.OdpNet.OracleDatabase, EntLibContrib.Data.OdpNet, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null" />
</DbProviderFactories>
</system.data>
</configuration>
मैं एक x64 विंडोज 7 मशीन पर विकास कर रहा हूं।
मैंने डाउनलोड: ODAC1120320Xcopy_32bit.zip (oracle.com से)
कौन सा है:
ODAC 11.2 रिलीज 5 (11.2.0.3.20) डाउनलोड XCopy संस्करण [11 सितंबर जारी 2012]
मैंने इस ज़िप फ़ाइल को अनजिप कर दिया।
मैं खोज की है और इन फ़ाइलों को बाहर पकड़ा:
oci.dll Oracle.DataAccess.dll orannzsbb11.dll oraociei11.dll OraOps11w.dll
ध्यान दें, जब वहाँ के 2 फ़ाइलें थे वही नाम, मैंने अपनी 3.5 फ्रेमवर्क आवश्यकता के लिए "bin \ 2.x \" या "odp.net20 \ bin" संस्करण लिया (मैं अभी तक 4.0 पर नहीं हूं)।
मैंने इन फ़ाइलों को लिया, और उन्हें एक सबफ़ोल्डर में रखा जहां से मेरी .sln फ़ाइल रहता है।
.\MySolution.sln
.\MyConsoleApplicationFolder\MyConsoleApp.csproj
.\ThirdPartyReferences\
.\ThirdPartyReferences\Oracle\
मैं
.\ThirdPartyReferences\Oracle\
फ़ोल्डर
मैं इस्तेमाल किया "संदर्भ जोड़ें" "MyConsoleApp.csproj" करने के लिए Oracle.DataAccess.dll के लिए एक संदर्भ जोड़ने के लिए ऊपर सभी फाइलों को जगह csharp परियोजना। (इसका मतलब था ब्राउज़िंग के लिए निश्चित रूप से ".. \ ThirdPartyReferences \ ओरेकल \")
मैं "घटना बनाएँ पोस्ट" "अतिरिक्त" कॉपी करने के लिए एक प्रयोग किया जाता है (उर्फ, "गौण)" फ़ाइलें
मेरे लाइनों मेरी पोस्ट का निर्माण घटना में थे:
copy $(ProjectDir)..\ThirdPartyReferences\Oracle\oci.dll $(TargetDir)*.*
copy $(ProjectDir)..\ThirdPartyReferences\Oracle\orannzsbb11.dll $(TargetDir)*.*
copy $(ProjectDir)..\ThirdPartyReferences\Oracle\oraociei11.dll $(TargetDir)*.*
copy $(ProjectDir)..\ThirdPartyReferences\Oracle\OraOps11w.dll $(TargetDir)*.*
ध्यान दें, मेरी पोस्ट का निर्माण घटना यूआरएल निर्देश से ऊपर "यदि नई कॉपी" बदल देता है।
जब मैंने अपना प्रोजेक्ट चलाया ........ मुझे कुछ गायब डीएलएल त्रुटियां मिलीं।
नोट: असेंबली में एंटरप्राइज़ लाइब्रेरी.डाटा ऑब्जेक्ट्स पर आपकी कॉल है ... आपको "माइक्रोसॉफ्ट नहीं मिल सकता है। व्यवहार। कुछ नामस्थान। त्रुटियों को दूर होने तक बस इन डीएल के संदर्भों को जोड़ना जारी रखें (ऊपर दिया गया पैकेज.कॉन्फिग नीचे खींच जाएगा)। मैं चला गया और के लिए एक संदर्भ जोड़ा
"Could not load file or assembly 'Microsoft.Practices.ServiceLocation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified."
तो (बेशक Nuget चलाने के बाद, सभी फाइलों को डाउनलोड करने के लिए) :
\ संकुल \ CommonServiceLocator
यहाँ की तरह एक विशेष से एक है। 1.0 \ lib \ NET35 \ Microsoft.Practices.ServiceLocation.dll
इससे मुद्दों को मंजूरी मिली।
और मेरी कोई तिथि नहीं कोड:
/*
using System;
using System.Data;
using System.Data.Common;
using Microsoft.Practices.EnterpriseLibrary.Data;
*/
public IDataReader EmployeesGetAll()
{
IDataReader returnReader = null;
try
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbc = db.GetSqlStringCommand("SELECT * FROM (SELECT * FROM TEMPLOYEE) WHERE ROWNUM <= 25");
returnReader = db.ExecuteReader(dbc);
return returnReader;
}
finally
{
}
}
और यह काम किया (ध्यान दें "* चुनें" डेमो प्रयोजनों के लिए ही है)।
धन्यवाद:
https://jeremybranham.wordpress.com/2011/04/25/oracle-instant-client-with-odp-net/#comment-181
मुझे लगता है कि इस ODP.NET एक "xcopy" तैनाती बनाता है।
मुझे अभी भी सुनिश्चित करने के लिए एक स्वच्छ मशीन पर परीक्षण करने की आवश्यकता है।
लेकिन दिन के अपने अंत ..............
================
अतिरिक्त सूचना:
उपरोक्त सबकुछ सही है। हालांकि, मैंने एक चेतावनी मारा। मैं अपने कोड का परीक्षण करने के लिए "कंसोल एप्लिकेशन" का उपयोग कर रहा था।
जब आप विजुअल स्टूडियो में एक नया कंसोल एप्लिकेशन जोड़ते हैं, तो यह x86 पर डिफॉल्ट होता है।
के रूप में यहां देखी गई:
http://www.xavierdecoster.com/post/2011/02/15/console-application-visual-studio-gotcha-on-x64-os-aspx
संपादित करें: (अपडेट किया गया लिंक)
http://www.xavierdecoster.com/post/2011/02/15/console-application-visual-studio-gotcha-on-x64-os
तो जब मैं सभी विन्यास और एक वास्तविक परियोजना में कोड और सामान डाल (जो था x64 बिट मशीन पर "कोई भी CPU" पर सेट करें) ... मैंने जो भी किया है, वह काम करना बंद कर दिया है। : <
थोड़ा फेरबदल के बाद ........ मैं oracle.com ODAC1120320Xcopy_x64.zip पर इस फ़ाइल पाया मैं तो सब कुछ मैंने ऊपर किया दोहराया है, लेकिन खोज इस x64 ज़िप फ़ाइल की अनज़िप फ़ाइलें ।
सबकुछ काम कर रहा है।
लेकिन कंसोल एप्लिकेशन के साथ "x86" डिफ़ॉल्ट चीज़ ने मुझे लूप के लिए फेंक दिया।
आप में डाउनलोड किया है मेरी exe.config फ़ाइल (टैग के अंदर) के लिए निम्न XCOPY संस्करण जोड़ने के लिए था? क्या आपने देखा है कि XCOPY ज़िप फ़ाइल के अंदर install.bat और config.bat फ़ाइलें क्या कर रही हैं? मैन्युअल रूप से चीजों को करने का प्रयास करने से पहले रीडमी के अनुसार उन फ़ाइलों को बस चलाकर शुरू करें। –
हाय क्रिश्चियन, मैंने ओडीएसी 11.2 रिलीज 4 (11.2.0.3.0) के लिए सार्वभौमिक इंस्टॉलर का उपयोग किया और तत्काल क्लाइंट के लिए मैंने उस पैकेज को डाउनलोड किया और डीएल को मेरी परियोजना में कॉपी किया। – Mustang31
इसके बजाय XCOPY इंस्टॉल करें डाउनलोड करें। यह वास्तव में आपके द्वारा स्वयं को मिलने वाली परेशानी से बचने के लिए डिज़ाइन किया गया है (डीएलएस कॉपी करना और बिना किसी मार्गदर्शन के कॉन्फ़िगर करना) –