第一次进入视图时,会引发此异常:
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)
答案 0 :(得分:1)
您可以为第一次机会异常visual studio设置break,调试以查看有关FileNotFound异常的详细信息,缺少哪个文件。
有时候,clr试图找到一些扩展dll,这对我们来说通常太神奇了。例如,如果在项目中使用XmlSerialize,如果不使用sgen.exe为可序列化类型生成动态xml序列化dll,CLR将在运行时生成一个,但在此之前,clr将尝试加载汇编,这将导致FileNotFoundException,但捕获