1

第一次进入视图时,会引发此异常:

mscorlib.dll 中出现了“System.IO.FileNotFoundException”类型的第一次机会异常

首先 - 为什么它会在我第一次进入该特定视图时发生?即使问题出在构造函数中(不可能),每次我进入视图时都会调用它(并抛出异常)。

其次 - 我将如何找到这种异常的来源?它不会闯入调试器,并且不会丢失任何资源文件(如背景图像、应用程序栏图标)。

最后——什么(除了在代码中直接引用文件)会抛出这样的异常?

我会向您展示有问题的代码,但文件有点太大,无法发布所有内容。

更新:

调试后,我注意到错误发生构造函数之后OnNavigatedTo()之前 Loaded()。在 OnNavigatedTo 方法中启动了一个线程,但我尝试捕获该部分的每个元素(以及它的每个内部部分),但没有发现错误。

更新 2:

在调试了一些之后,我发现了错误消息:

找不到文件或程序集名称“System.Windows.debug.resources, Version=2.0.5.0, Culture=en-US, PublicKeyToken=xxxxxxxxxxxxx”或其依赖项之一。

还有堆栈跟踪:

at System.ThrowHelper.throwVersion37CompatException(ExceptionType newEType,
    String newString, ExceptionType oldEType, String oldString)
at System.Reflection.Assembly.Load(String assemblyString)
at System.Windows.Resx..ctor()
at System.Windows.Resx.GetLoader()
at System.Windows.Resx.GetStringHelper(String name)
at System.Windows.Resx.GetString(String name)
at System.Windows.Controls.Primitives.ToggleButton.ToString()
at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj,
    IntPtr unmanagedObjArgs, Int32 argsTypeIndex,
    Int32 actualArgsTypeIndex, String eventName)
4

1 回答 1

1
  1. 您可以为第一次机会异常 Visual Studio 设置中断,调试以查看有关 FileNotFound 异常的详细信息,即缺少哪个文件。

  2. 有时,clr 会尝试查找一些扩展 dll,这通常对我们来说太神奇了。例如,如果您在项目中使用 XmlSerialize,如果您不使用 sgen.exe 为您的 serializble 类型生成动态 xml 序列化 dll,CLR 会在运行时生成一个,但在此之前,clr 会尝试加载 assemble ,这将导致 FileNotFoundException,但被捕获

于 2012-08-13T12:47:03.950 回答