当我分发我开发的软件时遇到问题,编译后的.exe在我的系统上运行正常,但在解析给其他人时,它会在32位和64位系统上显示以下错误。
我已经尝试了很多编译选项,包括混淆,为任何CPU构建,构建为64位和32位,我也尝试过,在其他系统上构建,所有.dll都在包中提供,我甚至厌倦了合并.dlls我可以不违反许可协议等。
甚至在其他系统上注册了所有.dll。
有什么想法吗? 我做了一些谷歌搜索,但作为最后的手段,我不得不问这里,知道我的运气将是明显的,错误让我相信dll不在那里,但他们是......
以下是错误:
Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01: testtool.exe
Problem Signature 02: 1.0.0.0
Problem Signature 03: 4e1ec8bf Problem
Signature 04: ScintillaNet
Problem Signature 05: 2.2.3581.19319
Problem Signature 06: 4adf566e
Problem Signature 07: 66e Problem
Signature 08: 5c
Problem Signature 09: System.IO.FileNotFoundException
OS Version: 6.1.7600.2.0.0.272.7
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
...在我编译的系统上运行正常。
上面让我认为dll不在那里......但它们是。
谢天谢地, 斯科特
答案 0 :(得分:6)
如果你的.NET应用程序在另一个系统上没有明显原因崩溃,并且错误报告暗示抛出异常这一事实(如System.IO.FileNotFoundException
),你应该为未处理的异常添加一个处理程序(AppDomain.CurrentDomain.UnhandledException
)然后只输出整个异常(e.ExceptionObject.ToString()
)和一个消息框。堆栈跟踪应该更深入地了解正在发生的事情(您还可以使用其他Exception属性)。使用PDB文件的调试版本将另外提供行号。
请参阅http://www.csharp-examples.net/catching-unhandled-exceptions/
在异常有可能发生之前,在应用启动时添加此事件处理程序非常重要。使用像Windbg这样的工具对于托管异常通常是过度的。