Ecco la mia soluzione Xcopy.
ho postato sopra a
(https://jeremybranham.wordpress.com/2011/04/25/oracle-instant-client-with-odp-net/#comment-181)
pure.
Ma credo di poter pubblicare la mia XML senza problemi di formattazione qui.
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
(si noti il tag <clear />
di sotto. Questo può o non può essere necessario, ma ho pensato che era meglio per eliminarli fuori dal non si sa quello che potrebbe essere nel file 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>
sto sviluppando su una macchina di 7 x64 di Windows.
Ho scaricato: ODAC1120320Xcopy_32bit.zip (da oracle.com)
Qual è il:
ODAC 11.2 Release 5 (11.2.0.3.20) Scaricare la versione XCopy [Rilasciato l'11 settembre, 2012]
ho decompressi questo file zip.
Ho cercato e pescato fuori questi file:
oci.dll Oracle.DataAccess.dll orannzsbb11.dll oraociei11.dll OraOps11w.dll
Nota, quando c'erano 2 file della stesso nome, ho preso la versione "odp.net20 \ bin" "bin \ 2.x \" o per il mio bisogno Framework 3.5 (io non sono il 4.0 ancora).
Ho preso questi file, e li ho messi in una sottocartella da dove risiede il mio file .sln.
.\MySolution.sln
.\MyConsoleApplicationFolder\MyConsoleApp.csproj
.\ThirdPartyReferences\
.\ThirdPartyReferences\Oracle\
metto tutti i file di cui sopra nella cartella
.\ThirdPartyReferences\Oracle\
ho usato "Aggiungi riferimento" per aggiungere un riferimento a Oracle.DataAccess.dll al "MyConsoleApp.csproj" progetto csharp. (Questo navigazione destinato a ".. \ ThirdPartyReferences \ Oracle \", naturalmente)
ho usato un "Post Genera evento" per copiare il "extra" (aka, "accessorio)" file
mie linee nel mio post evento accumulo sono:
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)*.*
nota, il mio post evento accumulo sostituisce il "Copia se più recente" dalle istruzioni URL sopra.
Quando ho eseguito il mio progetto ........ Ho un paio di errori di dll mancante.
Nota: Nell'assembly che ha le chiamate agli oggetti EnterpriseLibrary.Data ... verrà visualizzato il messaggio "Impossibile trovare lo spazio dei nomi Microsoft.Practices.SomethingSomething. Basta continuare ad aggiungere riferimenti a queste dll (che il precedente pacchetto.config verrà interrotto) finché gli errori non scompariranno.
Come qui è una specifica:
"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."
Così (dopo l'esecuzione Nuget naturalmente, per scaricare tutti i file) sono andato e ha aggiunto un riferimento a:
\ packages \ CommonServiceLocator. 1.0 \ lib \ NET35 \ Microsoft.Practices.ServiceLocation.dll
Questo ha chiarito i problemi.
E il mio codice csharp: (nota "select *" è per scopi dimostrativi solo)
/*
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
{
}
}
e ha funzionato.
Grazie:
https://jeremybranham.wordpress.com/2011/04/25/oracle-instant-client-with-odp-net/#comment-181
Penso che questo rende ODP.NET una distribuzione "xcopy".
Ho ancora bisogno di testare su una macchina pulita per essere sicuro.
Ma la sua alla fine della giornata ..............
================
aggiuntive Informazioni:
Tutto quanto sopra è corretto. Tuttavia, ho colpito un avvertimento. Stavo usando una "Applicazione Console" per testare il mio codice.
Quando si aggiunge una nuova applicazione console a Visual Studio, DEFAULT a x86.
come si vede qui:
http://www.xavierdecoster.com/post/2011/02/15/console-application-visual-studio-gotcha-on-x64-os-aspx
EDIT: (link Aggiornato)
http://www.xavierdecoster.com/post/2011/02/15/console-application-visual-studio-gotcha-on-x64-os
Così, quando ho messo tutta la configurazione e il codice e roba in un vero e proprio progetto (che era impostato su "Qualsiasi CPU" su una macchina x64 bit) ... tutto ciò che avevo fatto smise di funzionare. : <
Dopo tweaking un po '........ Ho trovato questo file sul oracle.com ODAC1120320Xcopy_x64.zip Ho poi ripetuto tutto quello che ho fatto in precedenza, ma la ricerca dei file decompressi di questo file zip x64 .
Tutto funziona.
Ma quella cosa "x86" predefinita con un'applicazione Console mi ha lanciato per un ciclo.
Hai scaricato la versione XCOPY? Hai visto cosa stanno facendo i file install.bat e configure.bat all'interno del file zip XCOPY? Inizia semplicemente eseguendo questi file in base al readme prima di provare a fare le cose manualmente. –
Ciao cristiano, ho usato il programma di installazione universale per ODAC 11.2 versione 4 (11.2.0.3.0) e per il client istantaneo ho scaricato quel pacchetto e copiato le dll nel mio progetto. – Mustang31
Si prega di scaricare l'installazione XCOPY invece. È progettato esattamente per evitare il problema in cui ti trovi ora (copia delle DLL e configurazione senza nessuna guida) –