【问题标题】:Fatal error on startup of C# applicationC# 应用程序启动时出现致命错误
【发布时间】:2010-11-17 22:53:50
【问题描述】:

C# Visual Studio 2010 速成版:

当我的应用程序启动时,甚至在显示我的 GUI 之前,我在对话框中收到以下错误:


致命问题:值不能为空。
参数名称:来源


这似乎与应用程序中的某些用户设置有关。 我从 StringCollection 中的 String 更改了设置类型,但我不确定这是根本原因。 “源”这个名字也不敲响。

问题是我无法中断应用程序来调试此错误。 当我单击确定时,应用程序启动,但由于某种原因设置全部为空。

感谢您的帮助
戴维

【问题讨论】:

  • 名称“source”可能与 LINQ 有关。至少这是我所经历的。你试过调试吗?
  • 该错误通常与对集合执行操作有关 - 即 .ToList() 对为空的集合进行操作。它通常是底层的 LINQ 翻译。不知道这是否有帮助。
  • 尝试将调试器设置为在抛出任何异常时中断,然后发布相关异常的堆栈跟踪。
  • 这里有几个想法(可能重复?)stackoverflow.com/questions/3244336/…

标签: c# .net visual-studio debugging visual-studio-2010


【解决方案1】:

解决此问题的最佳方法是使用调试器找出异常的确切来源。为此,请尝试以下操作

仅禁用我的代码

  • 工具 -> 选项 -> 调试器
  • 取消选中“仅启用我的代码”

开启第一次机会异常

  • 调试 -> 异常
  • 检查“公共语言运行时异常”的“抛出”

然后按 F5 开始调试您的应用程序。这应该可以让您很好地了解错误发生的位置以及原因。

【讨论】:

  • 我总是得到一个“哇哦。太酷了。”当我告诉人们该功能时。 :)
  • 我应用了这个,现在得到一个“找不到文件异常”:“无法加载文件或程序集'System.XmlSerializers, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 或一个其依赖项。系统找不到指定的文件。"
  • 然后换行,内容如下:"return ((global::System.Collections.Specialized.StringCollection)(this["SrcPathList"]));"
  • 在“Settings.Designer.cs”文件中
  • @Davy,这个可以忽略。 (connect.microsoft.com/VisualStudio/feedback/…)。
【解决方案2】:

已解决

我替换了以下代码,它从属性中加载了我的内部 SrcPathList

*SrcPathList = new List(Properties.Settings.Default.SrcPathList.Cast()); // 从 StringCollection 到 List*

有了这个:

if (Properties.Settings.Default.SrcPathList != null)
{
  SrcPathList = new List(Properties.Settings.Default.SrcPathList.Cast()); // 从 StringCollection 到 List
}
别的
{
  SrcPathList = new List();
}

这解决了加载空列表导致空值的问题

感谢大家的快速帮助!

【讨论】:

    【解决方案3】:

    将设置设为break on all exceptions,而不仅仅是未处理的。

    执行将在引发异常的地方停止,而不是在对话框处。

    您不太可能处于代码中间,但您可以查看堆栈跟踪以了解发生了什么。

    【讨论】:

      猜你喜欢
      • 2015-07-24
      • 2018-07-06
      • 2018-11-09
      • 2018-03-26
      • 2017-05-07
      • 2020-05-12
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多