読者です 読者をやめる 読者になる 読者になる

ODP.NET4 を使っているのに、.NET Framework 3.5SP1 が入っていない環境だとエラーが発生する

.NET Oracle

システム要件
ドキュメントのシステム要件では、.NET 4 or .NET4 Client Profile となっているんですけどねー。


実行環境

  • WindowsXP SP3
  • .NET Framework 4 Client Profile (.NET 2系は未インストール)
  • ODP.NET4

再現コード

using System;
using Oracle.DataAccess.Client;

class Program {
  static void Main(string[] args) {
    try {
      Console.WriteLine(typeof(string).Assembly.FullName);
      Console.WriteLine(typeof(OracleConnection).Assembly.FullName);
      var connStr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service name)));User Id=user;Password=pass;";
      using (var conn = new OracleConnection(connStr))
      using (var cmd = new OracleCommand(@"select SYSDATE from dual", conn)) {
        conn.Open();
        Console.WriteLine(cmd.ExecuteScalar());
      }
    }
    catch (Exception e) {
      Console.WriteLine(e.Message);
      Console.WriteLine(e.StackTrace);
    }            
    Console.ReadKey();
  }
}

実行結果

                                                                                                                                                              • -

mscorelib, Version=4.0.0.0, ...
Oracle.DataAccess, Version=4.112.3.0, ...
'Oracle.DataAccess.Client.OracleConnection' type iniitalize error ....

                                                                                                                                                              • -

Windows Update から .NET 3.5 SP1 をインストールすると発生せず。。

  • OraOps11w.dll version 2.112.3.0.
  • Oracle.DataAccess.dll version 4.112.3.0

ここらへんの違いが影響あるのかなー?
Windows7 (.NET 2系インストール済)だと発生しないので、.NET 2系が入ってるかどうかが肝だと思ってるですが。。