Skip to Main Content

ODP.NET

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Load Oracle.DataAccess with several versions in GAC

kiquenetMar 27 2014

Hi,

I use Windows 8.1 64 bits.

I use VS 2012 Ultimate 32bit

I have installed:

64-bit ODAC 11.2 Release 3 (11.2.0.2.1) Xcopy for Windows x64

Location: C:\app\Company\odp.net\bin\2.x\Oracle.DataAccess.dll - ProcessorArchitecture: Amd64

Location: C:\app\Company\odp.net\bin\4\Oracle.DataAccess.dll - ProcessorArchitecture: Amd64

ODAC 11.2 Release 3 (11.2.0.2.1)

Location: C:\app\Company\product\11.2.0\client_2\odp.net\bin\2.x\Oracle.DataAccess.dll - ProcessorArchitecture: X86

Location: C:\app\Company\product\11.2.0\client_2\odp.net\bin\4\Oracle.DataAccess.dll - ProcessorArchitecture: X86

64-bit ODAC 12c Release 2 (12.1.0.1.2) for Windows x64

Location: C:\app\Company\product\12.1.0\client_1\odp.net\bin\2.x\Oracle.DataAccess.dll - ProcessorArchitecture: Amd64

Location: C:\app\Company\product\12.1.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll  - ProcessorArchitecture: Amd64

ODAC 12c Release 2 (12.1.0.1.2) and Oracle Developer Tools for Visual Studio

Location: C:\app\Company\product\12.1.0\client_2\odp.net\bin\2.x\Oracle.DataAccess.dll - ProcessorArchitecture: X86

Location: C:\app\Company\product\12.1.0\client_2\odp.net\bin\4\Oracle.DataAccess.dll - ProcessorArchitecture: X86

TNSNames.ora in this paths:

C:\app\Company\Network\Admin

C:\app\Company\product\11.2.0\client_2\Network\Admin

C:\app\Company\product\12.1.0\client_1\Network\Admin

C:\app\Company\product\12.1.0\client_2\Network\Admin

In GAC, I have all these references:

Oracle.DataAccess 32bit - 2.112.2.0 - CLR 2.0

Oracle.DataAccess 32bit - 2.121.1.0 - CLR 2.0

Oracle.DataAccess 64bit - 2.112.2.0 - CLR 2.0

Oracle.DataAccess 64bit - 2.121.1.0 - CLR 2.0

Oracle.DataAccess 32bit - 4.112.2.0 - CLR 4.0

Oracle.DataAccess 32bit - 4.121.1.0 - CLR 4.0

Oracle.DataAccess 64bit - 4.112.2.0 - CLR 4.0

Oracle.DataAccess 64bit - 4.121.1.0 - CLR 4.0

Oracle.ManagedDataAccess    MSIL  - 4.212.1.0 - CLR 4.0

Oracle.ManagedDataAccessDTC 32bit - 4.212.1.0 - CLR 4.0

Oracle.ManagedDataAccessDTC 64bit - 4.212.1.0 - CLR 4.0

I have VS 2012 unit test project, Platform Target AnyCPU and Target Framework: .NET 4.5.

I use this reference: Oracle.DataAccess.4.112.2.0

Location: C:\app\Company\product\11.2.0\client_2\odp.net\bin\4\Oracle.DataAccess.dll - ProcessorArchitecture: X86

In App.config

  <oracle.dataaccess.client>

  <settings>

      <add name="DllPath" value="C:\app\Reale\product\11.2.0\client_2\bin"/>

    </settings>

  </oracle.dataaccess.client>

  <runtime>

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

        <qualifyAssembly partialName="Oracle.DataAccess" fullName="Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>

      <dependentAssembly>

        <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342"/>

        <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="4.112.2.0"/>

      </dependentAssembly>

   </assemblyBinding>

  </runtime>

I execute this code (extract):

  [TestMethod]

        public void Version_OracleDataAccess_ODPnet_test()

        {

            InfoCommon();

            var locationThisCode = Assembly.GetExecutingAssembly().Location;

            var an1 = AssemblyName.GetAssemblyName(locationThisCode);

            TestContext.WriteLine("GetExecutingAssembly location:  " + locationThisCode);

            TestContext.WriteLine("\t\t\tProcessorArchitecture: " + an1.ProcessorArchitecture);

            TestContext.WriteLine("");

            var t = typeof(Oracle.DataAccess.Client.OracleConnection);

            TestContext.WriteLine("Assembly Oracle.DataAccess: " + t.Assembly.FullName);

            TestContext.WriteLine("Oracle.DataAccess. Location:  " + (t.Assembly).Location);

            TestContext.WriteLine("Oracle.DataAccess. GlobalAssemblyCache: " + (t.Assembly).GlobalAssemblyCache);

            TestContext.WriteLine("Oracle.DataAccess. AssemblyQualifiedName: " + t.AssemblyQualifiedName);

            TestContext.WriteLine("Oracle.DataAccess. Module.FullyQualifiedName:  " + (t.Module.FullyQualifiedName));

            TestContext.WriteLine("\r\n");

            Assert.IsTrue((t.Assembly).GlobalAssemblyCache, t.Name + " NOT in GAC");

            var myAssemblyName = AssemblyName.GetAssemblyName(t.Assembly.Location);

            TestContext.WriteLine("Oracle.DataAccess. ProcessorArchitecture: " + myAssemblyName.ProcessorArchitecture);

            var assemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies().ToArray();

but I get this, Unit Test is using Oracle.DataAccess, Version=4.121.1.0, not version Oracle.DataAccess, Version=4.112.2.0

Trace log:

GetExecutingAssembly location:  C:\TFS\Data.Tests.v4.0\bin\Debug\Data.Tests.v4.0.dll

ProcessorArchitecture: MSIL

Assembly Oracle.DataAccess: Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342

Oracle.DataAccess. Location:  C:\Windows\Microsoft.Net\assembly\GAC_32\Oracle.DataAccess\v4.0_4.121.1.0__89b483f429c47342\Oracle.DataAccess.dll

Oracle.DataAccess. GlobalAssemblyCache: True

Oracle.DataAccess. AssemblyQualifiedName: Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342

Oracle.DataAccess. Module.FullyQualifiedName:  C:\Windows\Microsoft.Net\assembly\GAC_32\Oracle.DataAccess\v4.0_4.121.1.0__89b483f429c47342\Oracle.DataAccess.dll

Oracle.DataAccess. ProcessorArchitecture: X86

However, for Get Referenced assemblies, I get:

Location: C:\Windows\Microsoft.Net\assembly\GAC_32\Oracle.DataAccess\v4.0_4.112.2.0__89b483f429c47342\Oracle.DataAccess.dll

ProcessorArchitecture: X86

and in my app.config I set binding redirect and qualifyAssembly

Any suggestions for use 4.112.2.0 version, not 4.121.1.0?

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Apr 24 2014
Added on Mar 27 2014
0 comments
2,570 views