是什么导致WPF应用程序中的InvalidDeploymentException?

时间:2011-01-13 07:31:41

标签: .net wpf exception swallowed-exceptions

我开发了一个WPF应用程序,当我在调试模式下启动它时,我在输出中看到以下内容:

  

'WpfApplication1.vshost.exe'(管理   (v2.0.50727)):已加载   'C:\ Windows \组件\ GAC_MSIL \ System.Deployment \ 2.0.0.0__b03f5f7f11d50a3a \ System.Deployment.dll',   符号已加载。第一次机会   类型例外   'System.Deployment.Application.InvalidDeploymentException'   发生在System.Deployment.dll中   附加信息:申请   身份没有设定。

如果我在另一个WPF应用程序中使用此应用程序中的控件,则输出中会有7条此类消息。不过,该应用程序运行正常。

你能解释一下抛出这些异常的原因吗?我发现方法ApplicationDeployment.get_CurrentDeployment引发了它们。在MSDN中写道,当您“试图从非ClickOnce应用程序调用此静态属性时”出现此异常。我无法理解它的含义。

我找到了类似的帖子InvalidDeploymentException - Application identity is not set,但这个问题没有答案。

1 个答案:

答案 0 :(得分:40)

这是一个“第一次机会异常”,这意味着调试器只是通知您抛出了异常,而不是那个未处理的异常。

.NET Framework在内部抛出并捕获该异常 - 调试器告诉您它出现在System.Deployment.dll中的某些代码中。尝试访问用户/网络信息时会引发异常,但底层代码在异常发生时捕获异常并自动恢复执行。你无能为力,它相对无害。

您最有可能尝试检索当前用户的AppData路径,在这种情况下,Framework需要确定您的应用程序是普通应用程序还是ClickOnce应用程序才能返回正确的路径。如果您是ClickOnce应用程序,则只返回正确的数据。否则,抛出异常,该异常被框架捕获,并假设您的应用程序是ClickOnce应用程序,导致返回标准用户路径。

在应用程序运行时会抛出并处理许多异常。除非他们没有得到处理,否则没有坏处。如果这确实让您感到烦恼,您可以自定义调试器通知您的异常。例如:

  1. 从“调试”菜单中打开“例外”窗口。
  2. 展开“公共语言运行时例外” - > “System.Deployment.Application”。
  3. 取消选中“System.Deployment.Application.InvalidDeploymentException”旁边的框。