Oracle Data Provider for .NETバージョニング体系

Oracle Data Provider for .NET、管理対象外ドライバ; ODP.NET、管理対象ドライバ; およびODP.NET Coreには、それぞれ独自のバイナリ・セットが付属しています。

たとえば、21cのバイナリは次のようになります。

  • ODP.NET for .NET Framework 4

    • Oracle.DataAccess.dll

      • .NET Framework 4により作成

      • アセンブリ・バージョン番号: 4.x.x.x

    • OraOps21.dllおよびOracle Client

      • ODP.NET for .NET Frameworkで使用

ODP.NET管理対象ドライバは、そのバイナリと同じバージョンのモデルに対応します。

ODP.NET for .NET Framework 4:

  • Oracle.ManagedDataAccess.dll

    • .NET Framework 4により作成

    • アセンブリ・バージョン番号: 4.x.x.x

ODP.NET Core for .NET (Core):

  • Oracle.ManagedDataAccess.dll

    • .NET (Core)バージョンにより作成

    • アセンブリ・バージョン番号: 2.x.x.x

管理対象および管理対象外ODP.NETアセンブリ/DLL製品バージョニングの表記規則は次のとおりです。

n1.o1o2.o3.o4.o5

ここで

  • n1は最も重要な.NET Frameworkのバージョン番号です。

  • o1o2はODP.NET 12.2のバージョン番号の最初の2桁を表していました。このバージョンを変更すると、アプリケーションを再構築せずにODP.NETのインプレース・アップグレードができなくなるため、122のままです。

  • o3はODP.NET製品のバージョン番号の最初の桁です。

  • o4は、リリースが本番バージョン(1)かベータ/プレリリース・バージョン(0)かを示します。

  • o5はODP.NETアセンブリのビルド日です。

たとえば、ODP.NETバージョン番号が19.10の場合、対応する管理対象および管理対象外ODP.NETアセンブリ製品バージョンは4.122.19.1.20201106です。

ODP.NET Coreの場合、表記規則は次のとおりです。

n1.o1o2.o3.o4.o5

  • n1は、このODP.NET Coreバージョンがサポートする.NET (Core)の最小バージョン番号です。

  • o1o2は、このODP.NET Coreバージョンがサポートする.NET (Core)のマイナー・バージョンです。

  • o3はODP.NET製品のバージョン番号の最初の桁です。

  • o4は、リリースが本番バージョン(1)かベータ/プレリリース・バージョン(0)かを示します。

  • o5はODP.NETアセンブリのビルド日です。

たとえば、ODP.NET Coreのバージョン番号が19.10の場合、対応するアセンブリ製品バージョンは2.0.19.1.20201106です。

ODP.NETアセンブリ・バージョンはアセンブリ製品バージョンとは異なります。アセンブリ・バージョンでは4組の数字が使用され、アセンブリ製品バージョンでは5組の数字が使用されます。ODP.NETリリースごとに、アセンブリ・バージョンとアセンブリ製品バージョンの最初の4組の数字が同じになります。たとえば、ODP.NET Coreアセンブリ製品バージョンが2.0.19.1.20201106の場合、そのアセンブリ・バージョンは2.0.19.1です。管理対象および管理対象外ODP.NET 4.122.19.1.20201106の場合、アセンブリ・バージョンは4.122.19.1です。

アセンブリ製品バージョンは、使用される正確なODP.NETバージョンを識別します。メジャー・リリース・ファミリ内にOracleが出荷する複数の更新があるため、ODP.NETアセンブリ製品バージョンをサポート・コンテキストで指定します。

アセンブリ・バージョンは、さらに多くの.NET固有のコンテキストで使用されます。たとえば、.NET構成ファイルの< version>セクションでは、4桁のアセンブリ・バージョンを使用して、使用するODP.NETバージョンを識別します。

アセンブリ製品バージョン番号は、WindowsのODP.NET DLLのProduct versionプロパティにあります。アセンブリ・バージョンは、WindowsのODP.NET DLLのFile versionプロパティにあります。

Oracleインストーラおよびマニュアルでは、アセンブリ/DLLバージョン番号ではなく、ODP.NET製品のバージョン番号を参照している点に注意してください。

従来どおりPublisher Policy DLLが提供されているため、旧バージョンのODP.NETにより作成されたアプリケーションは、バージョニング体系が変更されていても、より新しいODP.NETアセンブリにリダイレクトされます。

ODP.NET管理対象ドライバのバージョニング

ODAC 12cリリース2からは、ODP.NET管理対象ドライバで、AssemblyVersionAttribute属性値が同一である複数のアセンブリを一意に識別するためにアセンブリ・マニフェスト属性AssemblyInformationalVersionAttributeが使用されます。この値には、.NETコード、PowerShellおよびその他のWindowsアプリケーションからアクセスしてODP.NET管理対象ドライバのバージョンを一意に識別することができます。

AssemblyInformationalVersionAttributeは、実際の.NETアセンブリ・バージョンと同じバージョンに設定されますが、4桁目は例外で、この桁は0ではなくなります。かわりに、バージョンはODP.NET管理対象ドライバのリリースごとに一意となり、新しいリリースのたびに4桁目に1が加算されます。

この値には、.NET Framework System.Diagnostics.FileVersionInfo.ProductVersionプロパティを使用してアクセスできます。返された値は、Versionオブジェクトとして、または比較用のStringとして比較の演算子やメソッドで使用できます。要約すると、ODP.NET管理対象ドライバのアセンブリのうち、アセンブリ・バージョンが同一であるものの集合の中では、最も新しいODP.NET管理対象ドライバ・アセンブリの4桁目ProductVersionの値が他の古いアセンブリよりも大きいことになります。

PowerShellの例: この例では、管理者がODP.NET管理対象ドライバの各バージョンのアセンブリをそれぞれ区別しており、ある古いバージョンのODP.NET管理対象ドライバがc:\oldに、それよりも新しいバージョンがc:\newにあります。

スクリプト:

$VC1 = New-Object System.Version((Get-Command C:\old\Oracle.ManagedDataAccess.dll).FileVersionInfo.ProductVersion)
$VC2 = New-Object System.Version((Get-Command C:\new\Oracle.ManagedDataAccess.dll).FileVersionInfo.ProductVersion)
"Compare V1 to V2: " + $VC1.CompareTo($VC2)
"Compare V1 to V1: " + $VC1.CompareTo($VC1)
"Compare V2 to V1: " + $VC2.CompareTo($VC1)

出力:

Compare V1 to V2: -1
Compare V1 to V1: 0
Compare V2 to V1: 1

ノート:

ProductVersionプロパティの比較によって、どちらのバージョンが他方よりも新しいかに関する正しい情報が得られるのは、ODP.NET管理対象ドライバのうち、ODAC 12cリリース2以上からリリースされたものに限られます