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

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

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

実行ファイル起動直後にException発生

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

■95626 / inTopicNo.1)  実行ファイル起動直後にException発生
  
□投稿者/ ケロリニコフ (1回)-(2020/08/27(Thu) 14:17:21)

分類:[.NET 全般] 

開発環境:Visual Studio 2008
開発言語:VB.NET

開発マシンでは正常に動いている実行ファイル(.exe)を別のマシンで起動すると、その瞬間に
System.InvalidOperationException が発生して困っています。
1画面しかない Windowsフォームアプリケーションなのですが、スタートアップフォームのロード処理に書かれた最初の
処理が実行される前にこの例外が出てしまいます。

参照ファイルが無い可能性が高いと思い、参照コンポーネントは全て「ローカルにコピーする」を
True にしてコンパイルしています。
インストールされている .NET Framework のバージョンにも問題がない事を確認済みです。

同じ開発マシンの同じ開発環境で作成したプログラムは正常に動いているため、
コンパイル設定など全て同じ条件で実行しているのですが出来上がった実行ファイルを実行すると上記の通りに
なってしまいます。どのような原因が考えられますでしょうか。
Windows7のクライアントで実行すると、「システムは停止しました。System.InvalidOperationException が発生しました。」
のようなメッセージが表示されます。Windows10だと起動したのか分からない位何も起こらないのでシステムビューアを
見にいった所、同様のExceptionが発生している事が判明する、と言った状況です。
引用返信 編集キー/
■95627 / inTopicNo.2)  Re[1]: 実行ファイル起動直後にException発生
□投稿者/ 大谷刑部 (98回)-(2020/08/27(Thu) 14:52:03)
No95626 (ケロリニコフ さん) に返信
> 開発環境:Visual Studio 2008
> 開発言語:VB.NET
> インストールされている .NET Framework のバージョンにも問題がない事を確認済みです。

そう判断した根拠は何ですか?
VSが2008ということは.Netは2.0だったりするでしょ。
ただでさえも2系と4.xx系は互換問題がいろいろあるので、そこを疑うのがまず普通にやることだと思いますけど。

引用返信 編集キー/
■95628 / inTopicNo.3)  Re[1]: 実行ファイル起動直後にException発生
□投稿者/ 774RR (823回)-(2020/08/27(Thu) 15:00:46)
えっと VS2008 ってことは .NET Framework 3.5 を対象にしたプログラムしか作れない
かつ Windows 10 の標準インストール状態だと .NET Framework 3.5 が入っていない
ので .NET Framework が無いが InvalidOperation になりそうな気がしなくもないんだけど
# ってか起動前にエラーになるのであればこの辺が極めて怪しい

開発マシンでないターゲットマシンにて .NET Framework 3.5 が有効化されているかどうか
当該ソフトのソースディレクトリ中 app.config に <startup><supportedRuntime> を書いたか
****.exe.config もちゃんと配布物に含めているか
あたりがチェックポイント。
その辺の情報が無いと妄想と憶測でレスすることになるのでお互いに時間の無駄になるっス。

オイラんとこで VS2005 で作った .NET Framework 2.0 対象アプリを
.NET Framework 3.5 を有効化してない Windows10 で動かすためには
app.config に小細工して exe.config も配布すればよい
ってのがここの過去ログにありそうな気がする。

引用返信 編集キー/
■95629 / inTopicNo.4)  Re[1]: 実行ファイル起動直後にException発生
□投稿者/ kiku (191回)-(2020/08/27(Thu) 15:10:12)
No95626 (ケロリニコフ さん) に返信
> 開発環境:Visual Studio 2008
> 開発言語:VB.NET
> 開発マシンでは正常に動いている実行ファイル(.exe)を別のマシンで起動すると、その瞬間に
> System.InvalidOperationException が発生して困っています。

・プロジェクトを新規作成し、何もコードを足さない状態でアプリを作成した場合、
 同じエラーになりますか?
・アプリの.NETFrameWorkのバージョンは?
・アプリでAnyCPUでビルドしていますか?
・エラーが発生しているWindows7は、32bitOSですか?64bitOSですか?
・エラーが発生しているWindows10は、32bitOSですか?64bitOSですか?
・参照があると記述されていますが、
 その参照されているDLLは、32bit、64bitの両方に対応していますか?
 ※マイクロソフト以外のDLLの場合、注意。

引用返信 編集キー/
■95630 / inTopicNo.5)  Re[2]: 実行ファイル起動直後にException発生
□投稿者/ ケロリニコフ (3回)-(2020/08/27(Thu) 15:20:52)
>えっと VS2008 ってことは .NET Framework 3.5 を対象にしたプログラムしか作れない
>かつ Windows 10 の標準インストール状態だと .NET Framework 3.5 が入っていない
>ので .NET Framework が無いが InvalidOperation になりそうな気がしなくもないんだけど
># ってか起動前にエラーになるのであればこの辺が極めて怪しい


> そう判断した根拠は何ですか?
> VSが2008ということは.Netは2.0だったりするでしょ。
> ただでさえも2系と4.xx系は互換問題がいろいろあるので、そこを疑うのがまず普通にやることだと思いますけど。
>
>えっと VS2008 ってことは .NET Framework 3.5 を対象にしたプログラムしか作れない
>かつ Windows 10 の標準インストール状態だと .NET Framework 3.5 が入っていない
>ので .NET Framework が無いが InvalidOperation になりそうな気がしなくもないんだけど
># ってか起動前にエラーになるのであればこの辺が極めて怪しい

大谷刑部さん、774RRさん、返信ありがとうございます。
まず私も真っ先に .NET Framework 関連を疑い、調査が終えているので情報としてあえて記載しました。
互換性の問題、VS2008 が.NET Framework 3.5 を対象にしたプログラムしか作れない(実際、3.5を対象としています)等の
諸知識はあるつもりです。
調査対象のパソコンにインストールされているバージョン調査は出来ている事、
全く同様の環境で作った別のプログラム(VS2008作成、.NET Framework3.5)が動いている事から判断して記載しております。

.NET Framework 周り以外の事例、または.NET Framework 関連でも特別な条件でこのような事が起こる事例を
ご存知な方がおりましたら情報を頂ければと思います。
引用返信 編集キー/
■95631 / inTopicNo.6)  Re[2]: 実行ファイル起動直後にException発生
□投稿者/ ケロリニコフ (4回)-(2020/08/27(Thu) 15:39:13)
No95629 (kiku さん) に返信
> ■No95626 (ケロリニコフ さん) に返信
>>開発環境:Visual Studio 2008
>>開発言語:VB.NET
>>開発マシンでは正常に動いている実行ファイル(.exe)を別のマシンで起動すると、その瞬間に
>>System.InvalidOperationException が発生して困っています。
>

kikuさん、返信ありがとうございます。以下、回答します。

> ・プロジェクトを新規作成し、何もコードを足さない状態でアプリを作成した場合、
>  同じエラーになりますか?
なりませんでした。

> ・アプリの.NETFrameWorkのバージョンは?
3.5です。
> ・アプリでAnyCPUでビルドしていますか?
はい。
> ・エラーが発生しているWindows7は、32bitOSですか?64bitOSですか?
> ・エラーが発生しているWindows10は、32bitOSですか?64bitOSですか?
どちらも64bitです。尚、開発機も64bitです。

> ・参照があると記述されていますが、
>  その参照されているDLLは、32bit、64bitの両方に対応していますか?
>  ※マイクロソフト以外のDLLの場合、注意。
念のため調査しますが、両方に対応しているはずです。


確かに、本当にこのまま分からない場合は新規プロジェクトに参照を必要としている
コードを少しずつ足して調べた方が早いのかもしれません・・・。
切り分けのアドバイス、ありがとうございました。引き続き何かありましたらご教示下さい。
引用返信 編集キー/
■95632 / inTopicNo.7)  Re[1]: 実行ファイル起動直後にException発生
□投稿者/ 魔界の仮面弁士 (2822回)-(2020/08/27(Thu) 16:28:02)
No95626 (ケロリニコフ さん) に返信
> 開発マシンでは正常に動いている実行ファイル(.exe)を別のマシンで起動すると、その瞬間に
> System.InvalidOperationException が発生して困っています。
> 1画面しかない Windowsフォームアプリケーションなのですが、スタートアップフォームのロード処理に書かれた最初の
> 処理が実行される前にこの例外が出てしまいます。

UnhandledException イベント等で捕らえられないか、確認してみてください。
うまく捉えることができれば、スタックトレースから追加の情報を得られるかもしれません。
https://dobon.net/vb/dotnet/programing/unhandledexception.html


また、「ローカルにコピーする」な参照コンポーネントは問題無くても、
それらのコンポーネントの依存ファイルやレジストリ設定等に問題があったのかもしれません。
あるいは参照コンポーネントに、未登録な COM コンポーネントへの参照が含まれていて、
それが 0x80040154 (REGDB_E_CLASSNOTREG) を誘発することで
InvalidOperationException が引き起こされることもあります。

VB2008 というと、世代的には Vista から Win7 に切り替わるぐらいの時期なので、
exe のプロパティで互換性モードを変更してみるのも一考かもしれません。


あとは、内部利用しているデータファイルや .config 情報の不整合、
それらを配置するフォルダ名の違いなど…。
開発環境(VS2008) は管理者権限で実行されているけれど、
実行環境では一般ユーザー権限で実行されていた、なんてことは無いでしょうか。


それと、もしもスタートアップが Form1 になっている場合には、
下記のように変更してみるのはどうでしょうか。

Sub Main()
 Dim f As New Form1()
 Application.Run(f)
End Sub


上記のようにスタートアップを変更することで、例外の発生位置が
 - Main が呼ばれる前なのか
 - Form1 を New した時なのか
 - フォームインスタンスを Run メソッドに渡した時なのか
などの切り分けがしやすくなるかと思います。
引用返信 編集キー/
■95633 / inTopicNo.8)  Re[3]: 実行ファイル起動直後にException発生
□投稿者/ kiku (192回)-(2020/08/27(Thu) 17:27:17)
No95631 (ケロリニコフ さん) に返信
>>・プロジェクトを新規作成し、何もコードを足さない状態でアプリを作成した場合、
>> 同じエラーになりますか?
> なりませんでした。

エラーが発生しなかったということですね。
だとすると、参照関連が怪しいですね。

>>・参照があると記述されていますが、
>> その参照されているDLLは、32bit、64bitの両方に対応していますか?
>> ※マイクロソフト以外のDLLの場合、注意。
> 念のため調査しますが、両方に対応しているはずです。

開発環境も、実行環境も、64bitなのでbit数の違いは関係ないかもです。


> 確かに、本当にこのまま分からない場合は新規プロジェクトに参照を必要としている
> コードを少しずつ足して調べた方が早いのかもしれません・・・。
> 切り分けのアドバイス、ありがとうございました。引き続き何かありましたらご教示下さい。

空のプロジェクトに1つづづ参照を追加していけば、
どのDLLなのかわかるかもしれません。

引用返信 編集キー/
■95634 / inTopicNo.9)  Re[4]: 実行ファイル起動直後にException発生
□投稿者/ kiku (193回)-(2020/08/27(Thu) 17:56:10)
No95633 (kiku さん) に返信

開発環境構築時に、何かSDKのようなものを
インストールしてないでしょうか?
もししていたら、それかもしれません。

※DLLが動くために必要なものがインストールされるのかも
引用返信 編集キー/
■95635 / inTopicNo.10)  Re[2]: 実行ファイル起動直後にException発生
□投稿者/ ケロリニコフ (5回)-(2020/08/27(Thu) 21:29:32)
> それと、もしもスタートアップが Form1 になっている場合には、
> 下記のように変更してみるのはどうでしょうか。
>
> Sub Main()
>  Dim f As New Form1()
>  Application.Run(f)
> End Sub


魔界の仮面弁士さん,kikuさん、返信ありがとうございました。
解決はしていませんがお二人のアドバイスのお陰で進展がありましたのでご報告します。

上記の通りスタートアップを代え、ThreadException を捉えるように変更した所、
Windowsイベントビューアの内容が変化し、参照しているSpread のDLL一つに対して IONotFoundException が出ている事が
分かりました。 このDLLは間違いなく「ローカルにコピーする」が行われているのですが、参照に失敗しているようです。

前述した「同じ環境で作成した別プログラム」も全く同じ状態なのですがきちんと動いています。
この差が何であるか分からず、解決には至っておりませんが糸口をつかむことが出来ました。取り急ぎ途中経過と御礼まで。
引用返信 編集キー/
■95636 / inTopicNo.11)  Re[3]: 実行ファイル起動直後にException発生
□投稿者/ ケロリニコフ (6回)-(2020/08/27(Thu) 21:55:44)
解決しました。

>それらのコンポーネントの依存ファイルやレジストリ設定等に問題があったのかもしれません。
>あるいは参照コンポーネントに、未登録な COM コンポーネントへの参照が含まれていて、
>それが 0x80040154 (REGDB_E_CLASSNOTREG) を誘発することで
>InvalidOperationException が引き起こされることもあります。

結果として、魔界の仮面弁士さんのこの指摘が原因でした。
IONotFoundException が起きていた DLL のレジストリ設定が上手くいっていなかったため
もう一度セットアップウィザードでセットアップを作成し再インストールした所、正常に起動しました。

皆様お忙しい中、ご回答下さいましてありがとうございました。本当に助かりました。
解決済み
引用返信 編集キー/

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


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

このトピックに書きこむ