webdevqa.jp.net

WPFアプリケーションでInvalidDeploymentExceptionが発生する原因は何ですか?

WPFアプリケーションを開発しましたが、デバッグモードで起動すると、出力に次のように表示されます。

'WpfApplication1.vshost.exe'(管理対象(v2.0.50727)):ロード済み 'C:\ WINDOWS\Assembly\GAC_MSIL\System.Deployment\2.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll'、シンボルがロードされました。タイプ 'System.Deployment.Application.InvalidDeploymentException'の初回例外がSystem.Deployment.dllで発生しました追加情報:アプリケーションIDが設定されていません。

このアプリケーションのコントロールを別のWPFアプリケーションで使用すると、そのようなメッセージが7つ出力されます。それでも、アプリケーションは正常に動作します。

これらの例外がスローされた理由を説明していただけますか?メソッドApplicationDeployment.get_CurrentDeploymentそれらを上げます。 MSDNには、「ClickOnce以外のアプリケーションからこの静的プロパティを呼び出そうとした」ときにこの例外が発生すると書かれています。それが何を意味するのか理解できません。

同様の投稿を見つけました InvalidDeploymentException-アプリケーションIDが設定されていません しかし、この質問に対する答えはありません。

21
Kirill Lykov

これは「ファーストチャンス例外」です。つまり、デバッガーは、例外が処理されなかったのではなく、例外がスローされたことを通知しているだけです。

.NET Frameworkは、その例外を内部的にスローおよびキャッチしています。デバッガーは、それがSystem.Deployment.dllの一部のコードで発生することを通知します。ユーザー/ネットワーク情報にアクセスしようとすると例外が発生しますが、基になるコードは例外が発生すると例外をキャッチし、自動的に実行を再開します。それについてあなたができることは何もありません、そしてそれは比較的無害です。

現在のユーザーのAppDataパスを取得しようとしている可能性があります。その場合、フレームワークは、正しいパスを返すために、アプリケーションが通常のアプリであるかClickOnceアプリであるかを判断する必要があります。 ClickOnceアプリの場合は、正しいデータが返されるだけです。それ以外の場合は、例外がスローされ、フレームワークによってキャッチされ、アプリケーションがnot ClickOnceアプリであると想定され、代わりに標準のユーザーパスが返されます。

アプリケーションの実行中にスローおよび処理される例外がいくつかあります。取り扱わない限り害はありません。これが本当にバグである場合は、デバッガーが通知する例外をカスタマイズできます。例えば:

  1. [デバッグ]メニューから[例外]ウィンドウを開きます。
  2. 「共通言語ランタイムの例外」->「System.Deployment.Application」を展開します。
  3. 「System.Deployment.Application.InvalidDeploymentException」の横にあるチェックボックスをオフにします。
43
Cody Gray