没有安装 Visual Studio 应用程序崩溃

5
代码太大了,无法在此发送,而且我不知道哪些部分是重要的。我已经在我拥有的每台电脑上尝试过,但没有一台能正常运行。VS2010编译代码时没有任何警告或错误,并且可以正常运行应用程序,如果我直接从操作系统启动应用程序也可以正常工作。但是当我把它放到其他电脑上时就无法工作(我在所有地方都安装了Framework 4.0,我的其他应用程序也可以正常工作)。
在我的笔记本电脑(win xp)上,它显示“程序遇到问题并需要关闭……”。标准的Windows“发送/不发送”错误没有提供关于问题的具体信息。
在我的PC(win xp)上,它与笔记本电脑上显示的相同,然后我在那里安装了Visual Studio,它开始正常工作。当我卸载VS10时,它再次崩溃,并显示类似“未处理的异常找不到即时调试器……”的消息,同样没有关于问题的具体信息。
我的朋友带来了他的笔记本电脑(win 7),没有任何消息显示出来,但也没有应用程序。它什么都没做,没有消息,没有应用程序,甚至没有进程启动。当我单击图标时,等待光标出现了2秒钟,然后就没反应了。
每次都是相同的情况,没有窗体显示,它会立即崩溃。唯一实际工作的PC是我创建它的PC(win 7),当然安装了Visual Studio 2010。我认为其他PC缺少一些文件或.dll和其他垃圾,这些是与VS2010一起安装的。有什么想法要寻找什么?我不能在所有地方都安装VS,它太大了,就像说“您需要Adobe Premiere才能观看视频”。
编辑: Windows中的事件:
Application: Floorball.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
Stack:
   at Floorball.Interface.InitializeComponent()
   at Floorball.Interface..ctor()
   at Floorball.Program.Main()

[SOLUTION] 虽然不是完全解决了,但我在InitializeCoponent()中找到了导致崩溃的GUI组件。它就是愚蠢的LineShape!!我真的不明白为什么它不在所有地方正常工作!所以,如果有人遇到类似的问题,请尝试此解决方法!

1
你有观看Windows中的事件吗?如果没有,请打开运行命令,输入“eventvwr”,在崩溃后立即运行。事件查看器应该会显示可能的故障原因。 - Kangkan
在事件日志中是否提供了更多信息?转到开始菜单>运行,键入eventvwr,并查看应用程序日志中是否有任何内容。 - Chris Pont
你需要提供更多的细节 - 应用程序类型,它正在做什么,它正在引用哪些系统库。根据你所描述的,似乎有一些由Visual Studio安装的dll没有包含在标准的.net 4.0包中,但这只是猜测。 - tchrikch
我正在创建一个应用程序来生成图形,该图形将显示在辅助屏幕上。我正在使用许多表单、Windows.Form.Timers,但基本上并不复杂,只需将值发送到另一个表单并在辅助屏幕上显示即可。 - Safiron
我在Windows中检查了事件,发现了两个错误:.NET 4.0运行时和.NET 4.0运行时错误报告。接下来该怎么办? - Safiron
6个回答

4
听起来你正在试图在没有调试dll的机器上运行调试版本。尝试编译发布版本,看看是否有所帮助。
补充说明:
另一个可能的问题(但如果没有具体信息,这只是猜测)是64/32位的区别。如果你要运行的程序使用了P/Invoke技术,那么这可能会成为一个问题。如果你的项目设置为任何CPU,那么它将在64位操作系统上以64位程序运行,在32位操作系统上以32位程序运行。尝试明确地定位x86,看看是否有任何变化。

在上面的答案中添加了64/32位讨论。 - corvuscorax
我没有使用P/Invoke,它应该是32位应用程序。 - Safiron
我的项目不是设置为任何CPU,而是设置为x86,因为我这里没有64位操作系统 :) - Safiron

3
我想到的前三个事情是:
  • 缺少一些.NET库。如果它已经编译为.NET 4,可能需要完整的框架,而只找到较小的“客户端”版本。检查可再发行包。
  • 缺少C++库:如果它是一个C++程序,则需要安装C++ redist以及.NET redist。
  • 调试/发布:如果您使用调试配置编译,程序将寻找调试的.NET(和C++)库,这些库不包括在可再发行包中。使用Release配置编译可以解决这个问题。

是的,我相信这可能是一个问题。 - Safiron
我想安装那些C++库,但我不知道具体要找什么,是一个安装程序还是多个? - Safiron
你可以在C:\Program Files\Microsoft Visual Studio 10.0\VC\redist目录下找到相应的库文件(建议将它们复制到你的应用程序所在的同一目录中),或者你可以安装.NET 4.0 C++可再发行包。下载链接:http://www.microsoft.com/download/en/details.aspx?id=5555 - Coffee on Mars
我已经安装了.NET 4.0 C++可再发行包,但没有帮助,我可以尝试自己复制库,但是我应该连同文件夹一起复制还是只复制.dll文件? - Safiron
只需要 DLL 文件。请注意,C++ redistributable 不是“普通”的 .NET redistributable。 - Coffee on Mars

0

尝试使用 .net4 客户端配置文件进行编译


0
除了建议确保进行发布构建的答案外,还要检查您的项目设置:在“调试”选项卡上,“调试器”部分中,在您的“调试”和“发布”配置中都禁用选项“启用Visual Studio托管进程”。

这会有什么影响?我一直以为托管进程只是用来帮助 Visual Studio 调试器的。 - Coffee on Mars
@Coffee 请考虑它试图帮助一个不存在的Visual Studio调试器。 - Filburt
除非 OP 启动了由“启用 Visual Studio 托管进程”创建的 YourAppName.vshost.exe,否则我看不出这是否被选中有任何影响,因为他们并没有从 VS 中运行... - ToolmakerSteve

0

我刚刚花了过去两天的时间来处理这个错误。原来对于一个目标框架为.NET 4.0或.NET 4.0 CP的项目,存在一些在.NET 4.5中不存在的DLL,例如我的项目中的Visual Basic DLL。

将文件打包到安装程序中的InstallShield项目也无法检测到此依赖项。

我的项目是一个Visual Basic(VB6)项目,升级到Visual Basic .NET(VB.net),它需要位于

C:\Program Files\Reference Assemblies\Microsoft\VBPowerPacks\v10.0

的名为Microsoft.VisualBasic.PowerPacks.Vs.dll的DLL,我只有在意识到使用Visual Studio安装后项目可以正常运行,但在崩溃日志中除了“System.IOException.FileNotFound”之外没有特定的警告后才发现这一点。通过在Visual Studio中的项目对象资源管理器中逐个尝试每个DLL,将其添加到InstallShield LE项目中,构建并将其复制到安装了发布软件的虚拟机中,最终找到了这个解决方案。

希望这能帮助其他人。


0

整个早上一直在解决这个问题,现在终于解决了并知道原因。希望这篇文章对其他人有所帮助。

我安装了Krypton.Toolkit,自动将工具添加到Visual studio工具箱中。然后将这些工具添加到设计器中,自动将dll添加到项目引用中,但是这个工具包标记为CopyLocal=false。

我创建了一个安装程序,使用发布版本文件夹中的所有dll(当然上面的dll不在其中)。

将copylocal设置为true,然后重新构建安装程序,一切都正常了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接