我有一个经常出现的.NET应用程序无法启动的问题(在其他系统上而不是我的)。事实是,遗憾的是,我不能总是创造一个顺畅运行的包。因此,我经常需要发送我的Debug或Release文件夹的ZIP文件。
我真正的问题是这些应用程序没有告诉他们为什么没有启动。如果我从命令行启动它们,在EventLog中,或者即使我尝试在输出上打印我的所有应用程序上的Try Catch块的结果,我也完全没有例外...我错过了什么?
大多数情况下,它缺少库或安全相关问题。但是,毫不费力地找到确切的结果会很好:D
答案 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下的条目,并将文件发送给我。有几个字体文件名奇怪地以破折号(---)开头。这些已修复,并且已将注册表文件发送回客户以进行导入。之后,应用程序成功启动了!
中的说明,可能还需要删除字体缓存
答案 3 :(得分:0)
我知道它不是直接解决问题 - 但您是否尝试过发布应用程序(假设您当然使用的是Visual Studio)? 应该将您需要的所有内容包装到安装程序中。