使用无法启动的.NET应用程序进行故障排除

时间:2009-05-14 06:49:43

标签: .net debugging

我有一个经常出现的.NET应用程序无法启动的问题(在其他系统上而不是我的)。事实是,遗憾的是,我不能总是创造一个顺畅运行的包。因此,我经常需要发送我的Debug或Release文件夹的ZIP文件。

我真正的问题是这些应用程序没有告诉他们为什么没有启动。如果我从命令行启动它们,在EventLog中,或者即使我尝试在输出上打印我的所有应用程序上的Try Catch块的结果,我也完全没有例外...我错过了什么?

大多数情况下,它缺少库或安全相关问题。但是,毫不费力地找到确切的结果会很好:D

4 个答案:

答案 0 :(得分:3)

您是否尝试过查看融合日志? Suzanne Cook有一篇关于here的文章。

要做的另一件事(最小化无声错误):最小化Main方法;原因是JIT按方法工作,如果它不能JIT Main,它就不能使用你的异常处理:

/* for winform, you still new [STAThread] here */
static void Main() {
  try {
     MainCore();
  } catch (Exception ex) {
     // shout about it
  }
}

[MethodImpl(MethodImplOptions.NoInlining)] // usually overkill
static void MainCore() {
  // real code
}

答案 1 :(得分:3)

答案 2 :(得分:1)

我遇到了WPF应用程序无法启动的问题 - 事实证明问题与用户PC上的字体有关 - 禁用WindowsPresentationFontCache服务解决了问题。

我还在其他地方发现了一个帖子,其中包含以下信息......

  

...由于某种未知原因,客户在注册表项中有错误的条目,用于构建堆栈跟踪中引用的“默认字体系列”缓存。   客户被要求导出HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Fonts下的条目,并将文件发送给我。有几个字体文件名奇怪地以破折号(---)开头。这些已修复,并且已将注册表文件发送回客户以进行导入。之后,应用程序成功启动了!

     

根据此链接http://support.microsoft.com/kb/937135

中的说明,可能还需要删除字体缓存

答案 3 :(得分:0)

我知道它不是直接解决问题 - 但您是否尝试过发布应用程序(假设您当然使用的是Visual Studio)? 应该将您需要的所有内容包装到安装程序中。