• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.net2010で開発しています。)

Windows7でVB.net2010開発時のエラーを解決する方法

このQ&Aのポイント
  • VB.net2010でWindows7で開発したモジュールをWindowsXP上で動作させるとエラーが発生する問題について解決方法を紹介します。
  • Windows7でVB.net2010で開発したモジュールはWindowsXP上では正常に動作しない場合があります。ビルドしたモジュールをWindowsXP上で動作させるための方法を説明します。
  • VB.net2010で開発したモジュールをWindows7上でビルドしてもWindowsXP上では動作しない問題が発生します。Windows7でビルドしたモジュールをWindowsXP上で動作させるためには、互換設定を行う必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

そちらで現在公開している情報と全く同じ環境で、以下のコードをWin7 32bit vb2005にてコンパイルを行いました。 ※Oracle.DataAccessを参照設定に追加 Imports Oracle.DataAccess.Client Public Class Class1  Public Shared Sub Main()   Dim l_strCnn As String = "User Id=ユーザID;Password=パスワード;Data Source=TNS設定名;Connection Timeout=900;Pooling=False;Min Pool Size=10;Validate Connection=true;"   Try    MsgBox("1.起動")    Using l_oraCnn As New OracleConnection(l_strCnn)     MsgBox("2.接続開始")     l_oraCnn.Open()     MsgBox("3.接続中")     l_oraCnn.Close()     MsgBox("4.接続終了")    End Using    MsgBox("5.終了")   Catch ex As Exception    MsgBox(ex.Message)   End Try  End Sub End Class コンパイル後、「Test.exe」と「Oracle.DataAccess.dll」を抜き出し実行を行うと、こちらの環境ではWin7でもXPでも正常に動作を行うことが出来ました。 ndoxxさんの環境では「2.接続開始」まで行かないって事ですよね? OracleClientのバージョンが一致しているのにインスタンスが行えないとなると、、、 あとはFramework本体を疑うしかないかな・・・パッチの状況とか・・・ http://www.atmarkit.co.jp/ait/articles/1210/26/news086.html

ndoxx
質問者

お礼

色々ご教授頂き真にありがとうございました。感謝いたします。

ndoxx
質問者

補足

1050YEN様、ありがとうございました、解決しました。ODP.NETのバージョン違いのようでした。「Oracle.DataAccess.dll」をXPクライアントのパソコンからコピーして開発機Windows7の適当なフォルダに格納し、ビルド時の参照ライブラリをそのフォルダ内の「Oracle.DataAccess.dll」にしたところ、そのモジュールはXPクライアントで正常に動作しました。色々ご教授頂き真にありがとうございました。感謝いたします。

その他の回答 (4)

回答No.4

内容を確認いたしました。 一つ実験をしてもらえますでしょうか? 1.Win7でコンパイル 2.コンパイル後に出力先フォルダに存在するexe/dllファイル等を、全てXP端末にコピー 3.「XP端末にコピーしたExeの階層」にWin7からコピーしたOracle.DataAccess.dllがあると思いますが、 【XP端末の「C:\app\《何らかのユーザ》\product\11.2.0\client_1\ODP.NET\bin\2.x\」】 からOracle.DataAccess.dllをコピーして、exeファイルの階層に存在するdllとOracle.DataAccess.dllを差し替え 4.XP上でアプリケーションを起動 もしexeファイル階層にOracle.DataAccess.dllが配置されていない場合は、、、 この実験は無意味ですが・・・ 因みに・・・ >ビルドで出来上がったモジュールのプロパティで互換性でWindowsXPSP3にチェック ・EXEファイルのプロパティ →互換性タブ →互換モードでこのプログラムを実行する →WindowsXP(ServicePack3) ということですね? これはWin7端末実行時の挙動設定ですので、XPで実行するときは無関係ですので設定は不要だと思いますよ。

ndoxx
質問者

補足

1050YEN様、これは実際に試しています。結果は変わりませんでした。すみません。

回答No.3

解決策は現状ではわかりません。 状況整理と確認です。 --------- -- 前提 --------- ・Windows7 WindowsXPは共に32bitである ・Windows7 WindowsXPは共にOracleClient11gの同じバージョン(リビジョンを含む)がインストールされている --------- -- 状況 --------- ・Windows7でコンパイル→WindowsXPでの動作「×」 ・WindowsXPでコンパイル→Windows7での動作「◎」 ということですよね? 因みに私の今担当している開発プロジェクトは、上記前提と同様でして、コンパイルマシンはWin7で行っていて、クライアントアプリの配布は配布はClickOnceを使用しています。 もちろん稼動は正常にしています。 コンパイル方法については、特段「XP用に」としての設定をすることはしていません。 そこで逆に質問です。 ※質問1 >ちなみにビルドしたモジュールはWindowsXPの互換設定をしています。 とありますが、具体的にどのような設定を行っているのでしょうか? ※質問2 OracleClient11gは、Win7もXPもリビジョンまで(OracleClient 11.0.2.0等)が全く同じということですよね? インストールされている正確なバージョンを、リビジョンまで知りたいです。 ※質問3 接続に利用しているクラスはどのネームスペース配下のクラスを利用していますか? ・Oracle.DataAccess.Client ・System.Data.OracleClient ・System.Data.Odbc ・System.Data.Common ※質問4 デバッグコードを挿入できるのであれば、アプリケーション起動時の先頭で MsgBox(1)というコードを入れたとき、メッセージボックスが表示されますか? (アプリケーションが正常後にエラーが起きているか、または起動自体が出来ないのかを切り分けしたい) ※質問5 業務Exeとは別に簡素なExeを作成(接続オープン・クローズのみ)を作成して、状況を確認することは出来ませんか? ※質問6 Microsoftの.net Framework以外に、参照設定(サードパーティ製品等)を行っていませんか? (Office製品の参照設定がある場合は、Win7とXPのバージョンが異なると問題があると思います。)

ndoxx
質問者

補足

1050YEN様、ご回答ありがとうございます。逆質問にお答えいたしますのでよろしくお願いいたします。 ご質問1、ビルドで出来上がったモジュールのプロパティで互換性でWindowsXPSP3にチェックを入れています。ご質問2、11.2.0.1.0です。ご質問3、Oracle.DataAccess.Clientです。ご質問4、MessageBOX.Showを入れました。実行させるとメッセージボックスは表示されます。Oracleコネクションをインスタンスするところでエラーがでてこけます。ご質問5、状況を確認したところ同様のエラーとなります。ご質問6、他の参照設定はおこなっていません。 以上、すみませんが、よろしくお願いいたします。

回答No.2

ユーザはxpのsp3って事は32bitですよね? 開発機っていうかコンパイルマシンは64bitとかでやっているとか? あとはOracleの32/64bitの差とか?

ndoxx
質問者

補足

1050YEN様、ご回答ありがとうございます。WIndows7,WindowsXPのどちらも32bitです。オラクルは同じデータベースです。

  • futuman
  • ベストアンサー率60% (3/5)
回答No.1

XP=.NET Framework 3.5と 7=.NET Framework 4の違いでは? 外してたらご免なさい

ndoxx
質問者

補足

futuman様、ご回答をお寄せいただきありがとうございます。WindowsXPもWindows7もどちらもFramework 4.0がインストールされています。

関連するQ&A