C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

DLLのオートメーションエラーに関して

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■83735 / inTopicNo.1)  DLLのオートメーションエラーに関して
  
□投稿者/ mako (9回)-(2017/04/05(Wed) 08:56:18)

分類:[.NET 全般] 

お世話になります。

数日前に今回の件に関する質問をさせていただいたのですが、
再度、質問をさせてください。
まずやりたいことですが、.NetFrameWork4上で作成した
DBアクセスを行うDLLを作成しています。
このDLLを別の環境(環境2)に持っていき
VB6のプログラムから参照させるようにしているのですが、
以下のエラーが表示されます。

「オートメーションエラーです。指定されたファイルが見つかりません。(-2147024894)」

以前にこの掲示板にて教えていただいた方の情報を参考に
色々と試行錯誤を繰り返したのですが、手詰まりとなってしまいました。
おそらく.NetFrameworkとODP.Netのバージョンの問題かと思われるのですが、
現在の所解決に至っていません。

以下に現在の状況を記載しましたので、ご指摘があれば教えていただいても
よろしいでしょうか?

●環境1

OS:Windows Server2012 R2(仮想環境)64Bit
ビルド環境:Microsoft Visual Basic 2015
ビルド設定:
・対象フレームワーク:.Net Framework4
・対象のCPU:x86
・COM相互運用機能の登録にチェック
・アセンブリに署名するにチェック、キーファイルの設定あり
Oracle.DataAccess.dllのバージョン:2.111.7.0

●環境2
OS:Windows XP SP3(仮想環境)32Bit
ビルド環境:Microsoft Visual Basic 6
ビルド設定:環境1で作成されたTLBファイルを参照
Oracleバージョン:OracleClient 11g


●事前に行ったこと

1.環境1でテストスタブを作成し、接続ができるかを
確認した所、問題なく接続ができることを確認


●DLL配置後に行ったこと

1.EXEファイルが実行されるフォルダにDLLを配置して起動
またWindows\system32にDLLを配置して起動

2.RegASMコマンドにてレジストリ登録して起動

3.GacUtilコマンドにてレジストリ登録して起動


●その他の事象

Oracle.DataAccess.dllを参照していないDLLもあるのでビルドして環境2
で動かしたのですが、それは問題なく起動しました。
引用返信 編集キー/
■83736 / inTopicNo.2)  Re[1]: DLLのオートメーションエラーに関して
□投稿者/ mako (10回)-(2017/04/05(Wed) 08:59:29)
補足です

「●DLL配置後に行ったこと」の1〜3ですが、考えられる組み合わせで検証しています。

例1:DLLをEXE起動フォルダに配置(RegAsm,GacUtilコマンドは使っていない。)
例2:DLLをsystem32フォルダに配置してGacUtilコマンドを使用


引用返信 編集キー/
■83737 / inTopicNo.3)  Re[1]: DLLのオートメーションエラーに関して
□投稿者/ 魔界の仮面弁士 (1242回)-(2017/04/05(Wed) 09:19:20)
No83735 (mako さん) に返信
> ●環境2
> OS:Windows XP SP3(仮想環境)32Bit
> ビルド環境:Microsoft Visual Basic 6
> ビルド設定:環境1で作成されたTLBファイルを参照
> Oracleバージョン:OracleClient 11g

実行環境側に、ODP.NET のインストールは行っていますか?

ODP.NET Managed Driver すなわち Oracle.ManagedDataAccess 名前空間のライブラリは
実行環境にコピーするだけでも動作可能ですが(ただし 12c + .NET 4 以降が対象)、
ODP.NET Unmanaged Driver すなわち Oracle.DataAccess 名前空間のライブラリは、
OCI によって適切に GAC へインストールされねばなりません。
http://stknohg.hatenablog.jp/entry/2014/11/02/173039


また、実行環境において、10.2.0.2.20 未満の ODP.NET が導入済みの場合、
古い方のバージョンは削除しておかないと、正しく動作しない可能性があります。
http://d.hatena.ne.jp/atsukanrock/20090519/1242721158
引用返信 編集キー/
■83738 / inTopicNo.4)  Re[2]: DLLのオートメーションエラーに関して
□投稿者/ mako (11回)-(2017/04/05(Wed) 10:11:52)
魔界の仮面弁士様

早速のご回答ありがとうございます。

>実行環境側に、ODP.NET のインストールは行っていますか?

インストールは行っています。
GAC(C:\WINDOWS\assembly)に以下のものがインストールされていますが、
(ご指摘のあった10.2.0.2.20 未満の ODP.NETはインストールされていません。)
エラーが出てしまいます。

Oracle.DataAccess 2.111.7.20
Oracle.DataAccess.resources 2.111.7.20
Oracle.Web 2.111.7.20
Oracle.Web.resources 2.111.7.20



引用返信 編集キー/
■83740 / inTopicNo.5)  Re[2]: DLLのオートメーションエラーに関して
□投稿者/ mako (13回)-(2017/04/05(Wed) 13:28:59)
魔界の仮面弁士様

取り急ぎ報告します。

これが原因なのかは不明なのですが、C:\WINDOWS\Microsoft.NET\assembly\GAC_32に
今回が対象のOracle.DataAccess.dllでは無いものが登録されていたので、
これを変えてみた所、プログラム動くようになりました。
この作業は別環境でも行うので、教えていただいた下記の情報を
参考にさせてください。
この度はありがとうございました。

>ODP.NET Managed Driver すなわち Oracle.ManagedDataAccess 名前空間のライブラリは
>実行環境にコピーするだけでも動作可能ですが(ただし 12c + .NET 4 以降が対象)、
>ODP.NET Unmanaged Driver すなわち Oracle.DataAccess 名前空間のライブラリは、
>OCI によって適切に GAC へインストールされねばなりません。
>http://stknohg.hatenablog.jp/entry/2014/11/02/173039

>また、実行環境において、10.2.0.2.20 未満の ODP.NET が導入済みの場合、
>古い方のバージョンは削除しておかないと、正しく動作しない可能性があります。




引用返信 編集キー/
■83741 / inTopicNo.6)  Re[3]: DLLのオートメーションエラーに関して
□投稿者/ mako (14回)-(2017/04/05(Wed) 14:47:25)
No83740 (mako さん) に返信
> 魔界の仮面弁士様
>
> 取り急ぎ報告します。
>
> これが原因なのかは不明なのですが、C:\WINDOWS\Microsoft.NET\assembly\GAC_32に
> 今回が対象のOracle.DataAccess.dllでは無いものが登録されていたので、
> これを変えてみた所、プログラム動くようになりました。
> この作業は別環境でも行うので、教えていただいた下記の情報を
> 参考にさせてください。
> この度はありがとうございました。
>
> >ODP.NET Managed Driver すなわち Oracle.ManagedDataAccess 名前空間のライブラリは
> >実行環境にコピーするだけでも動作可能ですが(ただし 12c + .NET 4 以降が対象)、
> >ODP.NET Unmanaged Driver すなわち Oracle.DataAccess 名前空間のライブラリは、
> >OCI によって適切に GAC へインストールされねばなりません。
> >http://stknohg.hatenablog.jp/entry/2014/11/02/173039
>
> >また、実行環境において、10.2.0.2.20 未満の ODP.NET が導入済みの場合、
> >古い方のバージョンは削除しておかないと、正しく動作しない可能性があります。
>
>
>
>
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ