简体   繁体   English

VS 2010 .NET应用程序版本在XP或Server 2003上编译时崩溃

[英]VS 2010 .NET application release compile crashes on XP or Server 2003

I was looking at moving one of my applications from VS2010 to VS2012. 我当时正在考虑将我的应用程序之一从VS2010迁移到VS2012。 The solution consists of quite a few projects, so I'll try to outline the main parts. 该解决方案包含许多项目,因此,我将尝试概述主要部分。

Entry point is a WPF application based on .NET 3.5 SP1. 入口点是基于.NET 3.5 SP1的WPF应用程序。 This project references a .NET 2.0 class library and a .NET 2.0 C++/CLR Library compiled with the VC90 libraries of VS2008. 该项目引用了一个.NET 2.0类库和一个使用VS2008的VC90库编译的.NET 2.0 C ++ / CLR库。 The .NET 2.0 class library also uses the C++ lib. .NET 2.0类库也使用C ++库。

I don't use a lot of external binaries. 我不使用很多外部二进制文件。 In fact besides WiX the only thing is the WPF Toolkit (http://wpf.codeplex.com/releases/view/29117). 实际上,除了WiX之外,唯一的东西就是WPF工具包(http://wpf.codeplex.com/releases/view/29117)。

So what happens? 那会怎样呢? I compile the application with VS2010 on Win8 (VS2008 installed for the VC90 libraries) and everything runs fineon every platform. 我使用Win8上的VS2010(为VC90库安装了VS2008)编译了该应用程序,并且在每个平台上都能正常运行。 Now when I port the solution to VS2012 (of course again with VS2008 and VS2010 installed for the VC90 libs) and create a build it works fine on Win7, Win8 and Server 2008R2. 现在,当我将解决方案移植到VS2012时(当然还是为VC90库安装了VS2008和VS2010),并创建一个版本,它可以在Win7,Win8和Server 2008R2上正常工作。 However the binaries created by VS2012 crash upon startup on XP and Server 2003. I checked for installed .NET 3.5 SP1 and verified it by using the binaries created by VS2010. 但是,由VS2012创建的二进制文件在XP和Server 2003上启动时崩溃。我检查了已安装的.NET 3.5 SP1,并使用VS2010创建的二进制文件对其进行了验证。 They work. 他们工作。

The error is simple crash report window and an event log entry with the following details: .NET Runtime 2.0 Error Reporting Faulting application application.exe, version 1.0.0.0, stamp 50a39d24, faulting module kernel32.dll, version 5.2.3790.4480, stamp 49c51e7e, debug? 该错误是简单的崩溃报告窗口,以及带有以下详细信息的事件日志条目:.NET运行时2.0错误报告错误的应用程序application.exe,版本1.0.0.0,标记50a39d24,错误的模块kernel32.dll,版本5.2.3790.4480,标记49c51e7e ,调试? 0, fault address 0x0000bef7. 0,故障地址0x0000bef7。

This does not help me at all. 这一点对我都没有帮助。 Any ideas on how to fix this or where to look further? 关于如何解决此问题或在哪里进一步寻找的任何想法?

Thanks in advance! 提前致谢!

Thanks for the input. 感谢您的输入。 It pointed me in the right direction. 它为我指明了正确的方向。 I did a crash dump analysis that led me to rechecking the eventlog entries. 我进行了故障转储分析,导致我重新检查了事件日志条目。 And indeed I found another entry I had missed before. 确实,我找到了我以前错过的另一个条目。 There was a side-by-side error that originated from wrongly versioned VC90 DLLs on the new machine. 没有并行错误,该错误由新计算机上的VC90 DLL版本错误引起。 A VS2008 SP1 security update was missing. 缺少VS2008 SP1安全更新。 After installing that and recompiling the solution it now works as expected. 安装并重新编译解决方案后,它现在可以按预期运行。

Thank you. 谢谢。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM