tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルOracle.DataAccess.Client.OracleConnection
記事No12079
投稿日: 2022/02/18(Fri) 14:05
投稿者かたせ
お世話になります。
WIN7で使用していましたnet2010を
Win10へ入替しています。(オラクルクライアント10もインストール済)

プログラムを実行するとWin7の時は問題なかったのですが
「Oracle.DataAccess.Client.OracleConnection' のタイプ初期化子が例外をスローしました。」
の異常でます。


hhttps://doppo1.net/oracle/middle/odp.html
↑こちらのサイトには以下の記載あるのですが
対処方法もわからない状態です。
「上記のワードサイズ不一致のほか、ORACLEクライアントのバージョンとODP.netのバージョンが一致していない可能性があります。」

対応方法おしえていただけないでしょうか。

◆.NETでのOracle.DataAccessの参照先は以下になっています。
  C:\Windows\assembly\GAC\Oracle.DataAccess\1.102.5.0__89b483f429c47342\Oracle.DataAccess.dll

◆オラクルクライアントのOracle.DataAccess.dllです。
 C:\oracle\product\10.2.0\client_1\odp.net\bin\1.x\Oracle.DataAccess.dll


よろしくお願いします。

[ツリー表示へ]
タイトルRe: Oracle.DataAccess.Client.OracleConnection
記事No12080
投稿日: 2022/02/22(Tue) 01:40
投稿者YuO
> プログラムを実行するとWin7の時は問題なかったのですが
> 「Oracle.DataAccess.Client.OracleConnection' のタイプ初期化子が例外をスローしました。」
> の異常でます。

発生したTypeInitializationExceptionは、InnerExceptionに本来発生した例外を保持しています。
https://docs.microsoft.com/ja-jp/dotnet/api/system.typeinitializationexception

このInnerException.Messageなどを確認してみてはどうでしょうか。

[ツリー表示へ]
タイトルRe: Oracle.DataAccess.Client.OracleConnection
記事No12081
投稿日: 2022/03/09(Wed) 14:34
投稿者魔界の仮面弁士
プロジェクトで使用している .NET Framework のバージョンは何ですか?
プロジェクトで使用している/使用したい ODP.NET のバージョンは何ですか?

https://atsukanrock.hatenablog.com/entry/20090519/1242721158

.NET Framework 2.0/3.0/3.5 向けなのか、
.NET Framework 4/4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2/4.7/4.7.1/4.7.2/4.8 向けなのかで
とりうる Oracle Client の選択肢も変わってきます。


> C:\oracle\product\10.2.0\client_1\odp.net\bin\1.x\Oracle.DataAccess.dll
それは CLR1 世代、すなわち .NET Framework 1.0 / 1.1 向けの ODP.NET ですよ?
本来は VS.NET 2002/2003 での開発時に使う物であり、
VS2005 以降で利用する類のバージョンではないはず。

下記にもあるように、.NET Framework 1.x 系統と .NET Framework 2.0 系統では
別々のアセンブリが用意されています。
https://docs.oracle.com/cd/E16635_01/win.111/e06104/InstallVersioningScheme.htm

Vista (.NET Framework 3.0 世代)は .NET Framework 1.1 をインストールできますが
Win7 (.NET Framework 3.5 世代)には .NET Framework 1.1 をインストールできないため、
既存環境も含め、バージョンの組み合わせに不自然さを覚えます。


> (オラクルクライアント10もインストール済)
10g Client って、Win10 どころか Win8/8.1 さえ非対応ですよね?
Win7 で使う場合でさえ、10.2.0.5 以降が求められたはず。

10.1 のサポート期限は 2012/01
10.2 のサポート期限は 2013/07 ですし、
21c とまではいかずとも、最低でも 12.2 系統を使うべきかと思います。
(12.1 はサポート期限切れだが、12.2 のサポートは継続中)

.NET 4 以降であれば、面倒なインストール作業が不要で
ファイルコピーだけで動作可能な "Managed ODP.NET" が使えますから。

Unmanaged ODP.NET だと、複数バージョンの混在時に問題が起きやすいのですが、
Managed ODP.NET なら Side-by-Side 実行が可能ですし、nuget 導入もできるので
開発もしやすいかと思います。


> WIN7で使用していましたnet2010を

VB2010 の場合、
 .NET Framework 2.0
 .NET Framework 3.0
 .NET Framework 3.5
 .NET Framework 4
の何れかに対する開発が行えます。(1.0 / 1.1 向けの開発は不可)

VS2012/2013 なら .NET Framework 4.6.2 まで。
VS2015 なら .NET Framework 4.7.2 まで。

.NET Framework の最終バージョンとなる 4.8 向けの開発を行う場合は、
VS2017/2019/2022 が必要です。


> Win10へ入替しています。(オラクルクライアント10もインストール済)
Windows 10 のバージョンは何ですか?
開発環境があまりにも古そうですし、もしかして Enterprise LTSB/LTSC とか?

Win10 v1903 は、既定で .NET Framework 4.8 がインストールされた状態です。
この環境には .NET 4 〜 .NET 4.7.2 のランタイムをインストールすることはできません。
(.NET 4 〜 4.7.2 向けの EXE を 4.8 環境で動かすことは可能です)

Win10 v1903 未満の場合、.NET Frmaeowkr 4.8 は既定でインストールされていませんが、
追加インストールが可能です。ただし Win10 v1607 未満(v1511 以下) の環境には
.NET Framework 4.8 をインストールできません。

※ Win10 Enterprise LTSB 2015 は .NET Frameowork 4.6 です。
※ Win10 Enterprise LTSB 2016 は .NET Frameowork 4.6.2 です。
※ Win10 Enterprise LTSC は .NET Frameowork 4.7.2 です。

[ツリー表示へ]