在我的序列化类中,我有一个方法,它使用我的Settings
类的实例反序列化xml文件。没有其他任何东西可以触及文件,文件不应该被程序中的任何东西删除
这只发生在应用程序的启动例程中(在主窗体的load
事件中调用)。
if (!File.Exists("Settings.xml"))
{
return new Settings();
}
XmlSerializer xSerializer = new XmlSerializer(typeof(Settings));
using (FileStream fS = new FileStream("Settings.xml", FileMode.Open)) //Exception thrown.
using (XmlReader xRead = XmlReader.Create(fS))
{
return (Settings)xSerializer.Deserialize(xRead);
}
当我的程序到达第一个“using”语句(通过断点确认)时,Visual Studio将以下两行添加到输出窗口:
抛出异常:mscorlib.dll中的'System.IO.FileNotFoundException'
抛出异常:mscorlib.dll中的'System.IO.FileNotFoundException'
然后成功反序列化设置文件 这特别奇怪,因为我没有得到任何其他错误通知。我无法弄清楚导致这种情况的原因,虽然它对程序没有任何可观察到的影响,但我不愿意抛弃这个异常,因为它可能会产生其他影响。
造成这些例外的原因是什么?
答案 0 :(得分:2)
简答:如果您的代码有效,请不要担心。
更长的回答:它可能正在寻找另一个无法找到的文件。
如果确实想知道导致它的原因,请下载并运行Process Monitor。它将向您展示每个流程正在做什么。您可以使用此页面了解如何设置过滤器,以便只查看您的流程正在执行的操作:https://blogs.technet.microsoft.com/appv/2008/01/24/process-monitor-hands-on-labs-and-examples/
设置几个过滤器,例如“Process Name是[你的exe文件]”和“Result is not SUCCESS”。有可能,你会发现找不到一些你甚至不关心的文件:)
答案 1 :(得分:1)
首先让我这样说,如果你的代码有效,那就意味着你的文件中没有一个丢失,而且可能与你的代码无关。
我环顾四周,发现这个错误
抛出异常:' System.IO.FileNotFoundException'在mscorlib.dll中
当尝试加载一些standard.net类库时甚至会发生这种情况,因为错误发生在mscorlib.dll中,这是一个基类库: https://forums.asp.net/t/2077697.aspx?+System+IO+FileNotFoundException+in+mscorlib+dll+when+loading+standard+net+class+library
所以它可能就是这样的东西,即使你找到它也不会做太多的文件并且只需要你一段时间来修复它。因此,除非它引起一些问题,否则我建议只是忽略这一点并继续前进。