如何修复启动时出现异常代码0xE0434352的.NET Windows应用程序崩溃?


81

我在Visual Studio 2010中构建了.NET Windows窗体应用程序。我还通过Visual Studio 2010构建了相应的安装程序/安装程序包。它是作为32位(x86)应用程序构建的。(我们使用仅32位的第三方Windows窗体控件)。

我能够运行安装程序包并将其成功部署到其他Windows 7 64位环境和32位Windows XP盒中。已安装的应用程序可以在这些程序上正常运行。

但是,当我尝试运行64位Windows Server 2008 R2时,应用程序在启动时崩溃。它通过安装程序成功安装,没有任何错误。

加载应用程序时,它似乎崩溃了。我在应用程序的第一行放置了一个消息框,以查看是否超过了加载时间。该消息框未显示,因此我认为它是在加载/初始化应用程序期间发生的。

到目前为止,我还没有发现太多事情要做。从详细信息中,我看到以下内容:

Exception Code: E0434352

我到处钓鱼/谷歌搜索是否有明显的东西,但是什么也没看见。我看到了一些有关CLR中可能的堆栈溢出的引用。

Windows窗体应用程序使用以下参考文件构建:

  • 开发快递
  • Infragistics Winforms控件
  • ORACLE DataAccess DLL
  • 兔子MQ

有什么问题 我该如何解决呢?如何调试以获得更多有用的信息?


其中哪些引用使用非托管代码?运行WinDbg,加载您的应用程序,然后查看是否输出了有关该错误的任何信息。
keyboardP

另外,如果可能是ORACLE模块,则可能相关:stackoverflow.com/questions/2100955/…–
keyboardP

3
一个messageBox?严重?去看看System.Diagnostics.Debug。
Henk Holterman

Debugger.Launch()在运行该行时将提示您将进程附加到Visual Studio调试器,因此可以将其粘在入口点附近以在启动时附加进程。
2012年

1
已经有一段时间了,但是-您是否能够解决问题?我有一个客户报告此行为。在开发机器上很难在这里复制。请随意,分享您的解决方案-我认为值得推荐。谢谢!
deafjeff 2014年

Answers:


71

0xE0434352是所有.NET异常的异常代码,因此不会太多告诉您。您是如何获得此异常代码的?事件日志?

最好的选择是使用调试器来获取更多信息。如果Visual Studio调试器无法为您提供帮助,则可能需要使用SOS签出WinDbg。请参阅此处此处进行介绍。让它打破异常,看看是否可以获得有关原因的更多信息。

如果您怀疑在加载程序集时出现问题,则可能需要检出Fusion Log


4
在尝试调试程序之前,先检查一下Tergiver的答案
Rabolf

79

如果从事件查看器得到该错误,则应该从源“ .NET运行时”中看到另一个错误事件(至少一个)。查看该错误消息,因为它将包含该Exception信息。


5
谢谢,这确实对我有所帮助,因此,我发现我错过了一个依赖项(FileNotFound异常)
Pavel K

4

我不确定这是否会帮助任何人,但是由于这是我的问题,我认为值得一提:

我收到此错误,事实证明这是EXE构建平台的问题。由于项目中有Oracle参考,我们已经为x86构建了它,并且它必须为x64。当我们进行更改时,问题就消失了。因此,请查看您是否有任何类似的冲突。


4

看起来此错误0xe0434352适用于许多不同的错误。

万一它对任何人都有帮助,当我尝试在新的Windows 10安装上安装我的应用程序时遇到此错误。它可以在其他机器上运行,并且看起来该应用程序会在死亡之前立即启动。经过大量的反复试验,结果发现该应用程序需要DirectX9。尽管存在DirectX的更高版本,但它必须具有版本9。希望可以使某些人免于沮丧。


这是一个非常特殊的情况。不确定会有多少人会遇到这种特殊情况。
Eniola

3

我整天都在与之抗争,要求我的用户运行该软件的调试版本。因为它看起来好像没有运行第一行。没有信息的崩溃。

然后我意识到错误是在表单的InitializeComponent内部。

获取异常的方法是删除此行(或将其注释掉):

System.Diagnostics.DebuggerStepThrough()

一旦摆脱了限制,您将得到一个正常的例外。


2

部署应用程序时,我得到了这个。就我而言,我在项目安全性选项卡上选择了“这是一个完全信任的应用程序”,并对其进行了修复。


3
那可能不是真正的解决办法:您可能需要设置您的应用程序/它的安全性要求,以便它在中等信任环境中正常运行。但这是一个有用的起点-谢谢!
Rup

1

问题:

.Net应用程序代码在开始执行之前中止[控制台应用程序或Windows应用程序]

收到错误:已中止,错误代码为“ E0434352”

异常:未知异常

方案1:

当一个应用程序已经执行时,已经使用了一些依赖资源,而那些资源仍在与执行该应用程序一起使用时,当另一个应用程序或同一exe从其他来源触发时,其中一个应用程序将引发错误

方案2:

当应用程序由调度程序或自动作业触发时,它可能在后台处于执行状态,而当您尝试再次触发同一应用程序时,可能会触发错误。

解:

创建一个应用程序,在何时何地,应用程序在完成后立即释放其所有资源,一旦应用程序关闭,则杀死所有后台进程。检查并避免同时从多个源(例如批处理,任务计划程序和外部工具)执行该应用程序。检查应用程序和资源依赖性,并在需要时清理代码。


在我的情况下,应用程序文件夹或其中的文件被锁定/打开-因为系统不允许重命名它(简单的测试来检查文件夹和子文件夹是否为自由或打开/锁定)。在服务器上再次注销/登录后,它会释放锁
Kuleris

0

为了为我解决此问题(由于许多应用程序突然开始抛出此异常,例如CorelDraw X6就是其中之一),我卸载了.NET 4.5运行时并安装了.NET 4运行时。这两个版本不能并排安装,但是它们在GAC中使用相同的版本号。这会引起问题,因为某些功能已在4.5中弃用。

DLL Hell已返回...


0

所以..我已经在事件查看器中注意到,此崩溃对应于“ System.IO.FileNotFoundException”错误。

因此,我解雇了ProcMon,并注意到程序dll之一无法加载vcruntime140。所以我只安装了vs15 redist,它就可以了。


0

当与数据库的连接字符串不正确时,我们收到此错误。解决这个问题的关键是运行dotnet blah.dll,该文件提供了一个堆栈跟踪,向我们显示找不到指定的sql服务器实例。希望这对某人有帮助。


0

我知道这是一个有点旧的线程,但是我正在创建的ac#/ WPF应用程序也遇到了这个问题。该应用程序在开发计算机上运行良好,但无法在测试计算机上启动。事件查看器中的应用程序日志给出了System.IO.DirectoryNotFoundException的一个模糊的.NET运行时错误。

我尝试使用一些调试软件,但该应用程序无法保持足够长的运行时间,无法将调试器附加到进程中。在将头撞到办公桌上一天并看了很多类似这样的网页之后,我想解决此问题的最终方法是在测试机上安装VS2019。然后,我将.exe文件从其文件夹(位于Users [user] \ AppData \ Apps \ 2.0 ...文件夹中)拖到打开的VS2019实例中,然后从那里启动它。立刻,它出现了一个对话框,给出了异常和原因。

就我而言,当我向其中一个表单添加图标时,该图标的完整路径被放置到XAML中,而不仅仅是图标名称。我已将图标文件复制到项目文件夹中,但是由于测试计算机上不存在项目文件夹,因此这是该错误的根本原因。然后,我从XAML中删除了该路径,只保留了一个图标名称,重新构建了解决方案并重新发布了它,现在它在测试机上运行得很好。当然,除了导致错误的原因外,还有许多原因,但是这种故障排除方法应该可以确定错误的根本原因,因为Windows事件查看器给出的答案有些模糊。

总而言之,在测试机器上使用Visual Studio作为各种调试器。但是,为了使其正常工作,我不得不将.exe文件拖到IDE中并从那里启动(运行)它。我相信这也将与VS2017和VS2019一起使用。希望这可以帮助仍然存在此问题的人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.