Visual Studio 2010で.NET Windows Forms アプリケーションを作成しました。VisualStudio 2010を介して対応するセットアップ/インストールパッケージも作成しました。これは32ビット(x86)アプリケーションとして作成されます。 (32ビットのみのサードパーティのWindowsフォームコントロールを使用します)。
セットアップパッケージを実行し、他のWindows®7 64ビット環境および32ビットWindows®XPボックスに正常に展開できます。インストールされたアプリケーションはこれらで正常に動作します。
ただし、 Windows Server 2008 R2-64ビットを実行しようとすると、起動時にアプリケーションがクラッシュします。インストーラーを介してエラーなしで正常にインストールされました。
アプリケーションをロードするとクラッシュするようです。アプリケーションの最初の行にメッセージボックスを配置して、読み込みが完了したかどうかを確認します。メッセージボックスは表示されないので、アプリケーションの読み込み/初期化中に発生すると想定しています。
これまでのところ、続けるべきことはあまりありませんでした。詳細から、次のことがわかります。
Exception Code: E0434352
私はあちこちに魚がいる/ググって、明らかなものがあるかどうかを確認したが、何も見なかった。 CLR のスタックオーバーフローの可能性への参照をいくつか見ました。
Windowsフォームアプリケーションは、次の参照を使用して構築されます。
問題は何ですか?これを理解するにはどうすればよいですか?より有用な情報を取得するためにデバッグするにはどうすればよいですか?
0xE0434352は すべての.NET例外の例外コード なので、あまりわかりません。どのようにしてこの例外コードを取得しましたか?イベントログ?
最善の策は、デバッガを使用して詳細情報を取得することです。 Visual Studioデバッガーが役に立たない場合は、 WinDbg with SOS をチェックアウトする必要があるかもしれません。 here および here を参照してください。例外で中断し、理由に関する詳細情報を取得できるかどうかを確認します。
アセンブリを読み込むときに問題になると思われる場合は、 Fusion Log を確認してください。
イベントビューアーからそのエラーを取得している場合は、ソース「.NETランタイム」から別のエラーイベント(少なくとも1つ)が表示されるはずです。 Exception
情報が含まれるので、そのエラーメッセージを見てください。
0xE0434352の簡潔な説明はブログ投稿にありますなぜ例外コードe0434352を取得し続けるのですか?経由でのデバッグの指示- WinDbgおよびcdb 。
このエラー0xe0434352は、さまざまなエラーに適用されるようです。
それが誰かを助ける場合、新しいWindows 10インストールにアプリケーションをインストールしようとしたときにこのエラーに遭遇しました。他のマシンで動作し、死ぬ前にアプリが一時的に起動するように見えました。多くの試行錯誤の後、問題はアプリがDirectX9を必要としていたことが判明しました。 DirectXの新しいバージョンが存在していましたが、バージョン9が必要でした。
これが誰かに役立つかどうかはわかりませんが、それは私の問題だったので、言及する価値があると思います:
このエラーが発生していましたが、EXEがビルドされたプラットフォームの問題であることがわかりました。プロジェクトでのOracleの参照のために、x86用に構築しましたが、x64にする必要がありました。その変更を行うと、問題はなくなりました。したがって、同様の競合があるかどうかを確認してください。
私はこれと一日中、ユーザーにソフトウェアのデバッグバージョンを実行するように求めていました。最初の行を実行していないように見えたからです。情報なしのクラッシュ。
次に、エラーがフォームのInitializeComponent内にあることに気付きました。
例外を取得する方法は、この行を削除する(またはコメント化する)ことです。
System.Diagnostics.DebuggerStepThrough()
行を削除すると、通常の例外が発生します。
アプリのデプロイ時にこれを取得していました。私の場合、プロジェクトのセキュリティタブで「これは完全に信頼できるアプリケーションです」を選択しましたが、修正されました。
私はこれがやや古いスレッドであることを知っていますが、私が作成していたc#/ WPFアプリでもこの問題が発生しました。アプリは開発マシンでは正常に機能しましたが、テストマシンでは起動しませんでした。イベントビューアーのアプリケーションログでは、System.IO.DirectoryNotFoundExceptionのやや曖昧な.NETランタイムエラーが発生しました。
デバッグソフトウェアを使用してみましたが、アプリがデバッガをプロセスにアタッチするのに十分なほど長く動作しません。 1日間机に頭をぶつけて、このような多くのWebページを見た後、これをトラブルシューティングするために私がやったことは、テストマシンにVS2019をインストールすることでした。次に、.exeファイルをそのフォルダー(Users [user]\AppData\Apps\2.0 ...フォルダーにある)から開いているVS2019インスタンスにドラッグし、そこから開始しました。すぐに、例外と原因を示すダイアログボックスが表示されました。
私の場合、フォームの1つにアイコンを追加すると、アイコン名だけではなく、アイコンへの完全なパスがXAMLに配置されました。アイコンファイルをプロジェクトフォルダーにコピーしましたが、プロジェクトフォルダーがテストマシンに存在しないため、これがエラーの根本原因でした。次に、XAMLからパスを削除し、アイコン名を1つだけ残して、ソリューションを再構築して再公開しました。テストマシンで問題なく実行されました。もちろん、エラーの原因以外にも多くの原因がありますが、Windowsイベントビューアーでは多少あいまいな答えが得られるため、この方法でエラーの根本原因を特定できるはずです。
要約すると、テストマシンでVisual Studioを一種のデバッガーとして使用します。しかし、正しく動作させるには、.exeファイルをIDEにドラッグし、そこから開始(実行)する必要がありました。これはVS2017とVS2019でも機能すると思います。うまくいけば、これがまだこの問題を抱えている人を助けます。
問題:
.Netアプリケーションコードは、実行を開始する前に中断します[コンソールアプリケーションまたはWindowsアプリケーション]
受信したエラー:エラーコード「E0434352」で中止されました
例外:不明な例外
シナリオ1:
依存リソースの一部を使用し、それらのリソースが実行中のアプリケーションでまだ使用されているアプリケーションが既に実行されている場合、別のアプリケーションまたは同じexeが他のソースからトリガーされると、アプリケーションの1つがエラーをスローします
シナリオ2:
アプリケーションがスケジューラーまたは自動ジョブによってトリガーされると、バックグラウンドで実行状態になり、同じアプリケーションを再度トリガーしようとすると、エラーがトリガーされる場合があります。
解決:
完了後すぐにアプリケーションがすべてのリソースを解放するタイミングと場所でアプリケーションを作成するアプリケーションが閉じられたら、すべてのバックグラウンドプロセスを強制終了します。バッチプロセス、タスクスケジューラ、外部ツールなどの複数のソースから同時に実行しないでください。アプリケーションとリソースの依存関係を確認し、必要に応じてコードをクリーンアップします。
そのため、イベントビューアで、このクラッシュが「System.IO.FileNotFoundException」エラーに対応していることに気付きました。
そこで私は ProcMon を起動し、プログラムdllの1つがvcruntime140のロードに失敗したことに気付きました。だから、私は単にvs15 redistをインストールしただけでうまくいきました。
データベースへの接続文字列が正しくない場合、このエラーが発生しました。これを理解する鍵は、指定されたsqlサーバーインスタンスが見つからないことを示すスタックトレースを提供するdotnet blah.dllを実行することでした。これが誰かを助けることを願っています。