0

そのアプリケーションを介してデータベースを表示できる機能を備えたアプリケーションを既に作成しました。Visual Studio 2010 (まだリリースされていません) では、作成したアプリケーションはスムーズに実行され、エラーは見つかりませんでした。しかし、それをリリースしてセットアップを行い、コンピューターにインストールし、プログラムを実行してビューデータベースをクリックすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていませんが、確認するとエラーが発生しましたVisual Studio 2010 に戻すと、エラーが表示されず、スムーズに実行されませんでしたが、アプリケーションをインストールした直後にエラーが表示されます。

これは、Visual Studio 2010 (デバッグ) ではなく、インストールされたプログラムを介してアプリケーションを実行したときに発生するエラーです。

ここに画像の説明を入力

「続行」をクリックすると、プログラムはそのまま実行され、スムーズに実行されますが、なぜこのエラーがデバッグではなく、インストールされたプログラムでのみ表示されるのか不思議です。

誰がそれがどうなるか知っていますか?

詳細は次のとおりです。

ここに画像の説明を入力

4

1 に答える 1

0

リリース モードでのビルド時にコンパイラによって何かが最適化されてしまった可能性が非常に高く、実行時に予期せぬ事態が発生する可能性があります。おそらく、コンパイラが「最適化して取り除いた」副作用によって、オブジェクトの 1 つが初期化されている可能性があります。

問題の真相を突き止める簡単な方法の 1 つは、問題のあるメソッドの呼び出しを try/catch でラップし、例外をキャッチするときに、メッセージ ボックスに完全なスタック トレースと共にポップアップすることです。気になるのは、null 参照例外が実際に発生している行番号です。または、実行時に知りたい追加情報をログ ファイルに書き出すことをお勧めします。次に、アプリケーションを再デプロイして再インストールし、もう一度やり直してください。初期化されていないオブジェクトを特定したら、コードを分析して、デバッグ ビルドではなくリリース ビルドでのみ発生する理由を確認します。コード内の他の場所に影響を与える可能性のある何らかのパターン (またはアンチパターン) を使用しているかどうかを確認する必要があります。

于 2013-10-09T00:55:04.830 に答える