2010-05-19 38 views
5

我有一个.NET C#winforms应用程序,它在我的机器上效果很好,但如果我尝试在另一台机器上运行它,它不会启动。没有错误信息,没有崩溃消息,没有窗口 - 什么都没有。.NET应用程序默默无法启动时,程序集丢失

我发现这总是在引用程序集丢失时发生。我想这是.NET的一般行为,而不是特定于我的应用程序,是吗?

有没有什么办法可以配置.NET或我的应用程序,使得它在这种情况下吐出一个“引用程序集丢失”的错误消息?

+1

您是否尝试过在事件查看器中查看应用程序日志?通常会有一些错误信息解释程序崩溃的原因。 – TLiebe 2010-05-19 16:07:15

+0

嗨TLiebe。感谢您的答复。把它写成一个口令,我会接受它:-)的确,即使在“错误报告”被禁用(由公司环境规定)时,我也发现了错误日志消息。 – chiccodoro 2010-05-21 06:59:11

回答

6

这是不正常的。该应用程序将从触发Windows错误报告的未处理异常中死亡。我将不得不猜测目标机器已禁用或更换了WER。

+0

就是这样!太糟糕了,错误报告只会告诉我应用程序崩溃,但不会丢失什么程序集。而且太糟糕了,exe文件没有给标准错误输出写任何东西,“就像好男人一样”......但至少我现在知道它为什么保持完全沉默。 – chiccodoro 2010-05-21 06:58:17

+0

没有这样的魔法存在。你必须自己添加它,为AppDomain.CurrentDomain.UnhandledException事件实现一个事件处理程序。 – 2010-05-21 11:03:50

0

除了可执行文件,你是否也将DLL从debug/release文件夹复制到目标机器?

您可以尝试复制其他机器上的整个调试/发布文件夹。

同时检查应用程序(如果有)/事件日志的额外提示。

+0

嗨Ram。这实际上是我为什么应用程序失败的确切原因:我忘了复制一些程序集。但我的问题在于为什么应用程序没有抱怨缺少的程序集。 – chiccodoro 2010-05-21 06:51:36

+0

@chiccodoro: - 我不认为如果这是可能的.NET程序集。对于COM,你可以检查DLL是否已经在指定位置。对于.NET应用程序,如果程序集丢失,它只会抛出异常(我想方法未找到)。从我的建议,使每个引用的CopyLocal属性= true,因此所有这些程序集将成为您的调试/版本文件夹的一部分。 – Ram 2010-05-21 07:49:01

相关问题