質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

1回答

6488閲覧

起動時のerrorの箇所を特定したい。

coke2

総合スコア17

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2016/03/11 04:25

Visual Studio Express 2013 for Windows Desktopで、.NET Framework 4.5を対象に、WPFのアプリケーションをC#で開発しています。

propertyの設定にintの値を追加したところ、実行環境で起動できなくなる、というエラーに直面しています。
追加する以前は起動できていました。
作成環境やそれ以外のマシンでも起動できます。

実行環境で、
C:\Users\user\AppData\Local\wpfprogram01\wpfprogram01***\1.0.0.0\user.config
を確認したところ、追加した項目は存在していませんでした。
追加した項目は、
<setting name="waitTimemillisecond" serializeAs="String">
<value>100</value>
</setting>
<setting name="retrytimes" serializeAs="String">
<value>30</value>
</setting>
です。

C:\Users\user\AppData\Local\wpfprogram01\wpfprogram01***\1.0.0.0\user.config
を削除してみたり、動作している環境から、user.configをcopyしてみましたが、起動できません。

propertiesを読み込む場所を特定しようと、
public MainWindow() {
MessageBox.Show("InitializeComponent00");
InitializeComponent();
MessageBox.Show("InitializeComponent01");
}
としましたが、
そもそもMainWindow()の処理を実行していないで落ちています。

'wpfprogram01.exe' (マネージ (v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll' が読み込まれました
'wpfprogram01.exe' (マネージ (v4.0.30319)): 'C:\Users\user\Desktop\wpfprogram01\wpfprogram01.exe' が読み込まれました
'wpfprogram01.exe' (マネージ (v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework\v4.0_4.0.0.0__31bf3856ad364e35\PresentationFramework.dll' が読み込まれました
'wpfprogram01.exe' (マネージ (v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll' が読み込まれました
'wpfprogram01.exe' (マネージ (v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll' が読み込まれました
'wpfprogram01.exe' (マネージ (v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_32\PresentationCore\v4.0_4.0.0.0__31bf3856ad364e35\PresentationCore.dll' が読み込まれました
'wpfprogram01.exe' (マネージ (v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xaml\v4.0_4.0.0.0__b77a5c561934e089\System.Xaml.dll' が読み込まれました
'wpfprogram01.exe' (マネージ (v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_ja_b77a5c561934e089\mscorlib.resources.dll' が読み込まれました
'System.TypeInitializationException' のハンドルされていない例外が 不明なモジュールです。 で発生しました。

追加情報: '<Module>' のタイプ初期化子が例外をスローしました。

プログラム '[5976] wpfprogram01.exe: マネージ (v4.0.30319)' はコード 0 (0x0) で終了しました。

ということなのですが、この場合どこをどう修正すればよいかを特定するには、どのような方法をとればよいでしょう。

1週間悩んでいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakuwaku

2016/03/11 04:35

スローされたSystem.TypeInitializationExceptionのInnerExceptionはどうなっていますか?
guest

回答1

0

こんにちは。

まずは、以下のサイトなどを参考に、未処理例外を捕捉する処理を入れることをお勧めします。
WPFサンプル:未処理例外に対応する
WPFサンプル:UIスレッド以外で発生した未処理例外には対応する

そもそもMainWindow()の処理を実行していないで落ちています。

MainWindowが生成されるよりも先に、Application.Startupイベントが発生します。
ですので、確証はないのですが、例えば、Application.Startupイベントのイベントハンドラ内で、以下の処理を入れてみたら出力ウインドウに何か出力されるでしょうか?

C#

1private void Application_Startup(object sender, System.Windows.StartupEventArgs e) 2{ 3 try 4 { 5 System.Diagnostics.Debug.Print(wpfprogram01.Properties.Settings.Default.waitTimemillisecond); 6 } 7 catch (System.Exception ee) 8 { 9 System.Diagnostics.Debug.Print(ee.ToString()); 10 } 11}

投稿2016/03/11 05:35

daichan

総合スコア225

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coke2

2016/03/11 08:14

daichanさん、情報ありがとうございます。 早速未処理例外に対応し、実行環境(離れています)にexeを送ったのですが、起動しなかったと回答が来ました。 手元では System.Diagnostics.Debug.Print(wpfprogram01.Properties.Settings.Default.waitTimemillisecond); で、設定した100を出力windowに表示しました。 もうほかに方法がないので、現在、実行環境に、solution一式を送ってdebug起動して試すことにしました。
Tak1wa

2016/03/11 08:25

起動しないのは当然で、daichanさんが仰っているのは未処理例外を補足して原因追及を行ってはどうか、ということだと思います。 未処理例外部分でログ出力など行えないですか?
daichan

2016/03/11 08:33

手元ではOKで、実行環境がダメなのでしたね。 なら、手元でDebug.Printしても意味ないですね。失礼しました。 Tak1wa様がおっしゃっているように、Debug.Printメソッドの代わりに、ログファイルに書き込む処理などを入れて、実行環境で動かしてみると何かわかるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問