【问题标题】:Application crash without Visual Studio installed未安装 Visual Studio 的应用程序崩溃
【发布时间】:2011-08-30 08:14:26
【问题描述】:

发送到这里的代码太大了,我不知道哪些部分很重要。我在我拥有的每台电脑上都试过了,但它们都不起作用。 VS2010 在没有任何警告或错误的情况下编译代码并且可以正常运行应用程序,如果我只是从操作系统启动应用程序也可以正常工作。当我把它放在不同的 PC 上时不起作用(我确实到处都有 Framework 4.0,我的其他应用程序运行良好)。

在我的笔记本电脑 (win xp) 上显示“程序遇到问题,需要关闭...”。标准窗口“发送/不发送”错误没有说明具体问题。

在我的 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()

[解决方案] 还没有完全解决,但我能够在 InitializeCoponent() 中找到导致崩溃的 GUI 组件。它愚蠢的线形!我真的不明白为什么它不能在任何地方正常工作!所以如果每个人都有类似的问题,试试这个解决方案!

【问题讨论】:

  • 您是否观看了 Windows 中的事件?如果没有调出运行命令,请输入“eventvwr”并在崩溃后立即点击运行。事件查看器应该向您显示失败的可能原因。
  • 它是否在事件日志中提供了更多信息?转到开始 > 运行并键入 eventvwr 并查看应用程序日志中是否有任何内容。
  • 您需要提供更多详细信息 - 应用程序类型、正在做什么、它正在引用的系统库。根据您的描述,似乎 Visual Studio 安装了一些 dll,这些 dll 未包含在标准 .net 4.0 包中,但这只是猜测
  • 我正在创建应用程序来生成显示在辅助屏幕上的图形。我正在使用很多窗体,windows.form.timers,但基本上它只是将值发送到另一个窗体并在辅助屏幕上显示它们并没有什么特别复杂的
  • 我检查了 windows 中的事件,它显示了两个错误 .NET 4.0 Runtime 和 .NET 4.0 Runtime 错误报告下一步该怎么做?

标签: .net visual-studio visual-studio-2010 crash


【解决方案1】:

听起来您正在尝试在没有调试 dll 的机器上运行调试版本。尝试编译发布版本,看看是否有帮助。

附录:

另一件事可能是 64/32 位差异(但实际上只是猜测,没有具体细节)。如果您尝试运行的程序执行 P/Invoke,这可能是一个问题。如果您的项目设置为针对任何 CPU,那么它将在 64 位操作系统上作为 64 位程序运行,在 32 位操作系统上作为 32 位程序运行。尝试专门针对 x86,看看是否有任何改变。

【讨论】:

  • 在上面的答案中添加了 64/32 位讨论
  • 我没有使用 P/Invoke,它应该是 32 位应用程序
  • 我的项目没有设置为任何 CPU 设置为 x86,我这里没有任何 64 位操作系统 :)
【解决方案2】:

首先想到的三件事:

  • 缺少一些 .NET 库。如果它是为 .NET 4 编译的,它可能需要完整的框架,它只能找到较小的“客户端”版本。检查可再发行组件。
  • 缺少 C++ 库:如果是 C++ 程序,除了 .NET 之外,您还需要安装 C++ redist。
  • 调试/发布:如果您在调试配置中编译,程序将寻找可再发行软件包未安装的调试 .NET(和 C++)库。使用 Release 配置进行编译可以解决这个问题。

【讨论】:

  • 是的,我认为这可能是个问题
  • 我想安装那些 C++ 库,我只是不知道要寻找什么是一个安装程序还是更多?
  • 您可以在您的 C:\Program Files\Microsoft Visual Studio 10.0\VC\redist 目录中找到这些库(您应该将它们复制到与您的应用程序相同的目录中),或者您可以安装 @ 987654321@
  • 我已经安装了 .NET 4.0 C++ 可再发行包,但它没有帮助,我可以尝试自己复制库,但我应该用文件夹复制它们还是只复制 .dll 文件?
  • 只是 dll 文件。请注意,C++ 可再发行组件不是“普通”的 .NET 可再发行组件。
【解决方案3】:

尝试针对 .net4 客户端配置文件进行编译

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 这会有什么影响?我一直认为托管进程只是用来帮助 Visual Studio 调试器的。
    • @Coffee 考虑一下它试图帮助一个不存在的 Visual Studio 调试器。
    • 除非 OP 正在启动由 Enable Visual Studio hosting process 创建的 YourAppName.vshost.exe,否则我认为这是否重要,因为它们不是从 VS 运行的。 .
    【解决方案5】:

    整个上午都在与这个问题作斗争,现在解决了它以及为什么会发生。发帖希望对他人有所帮助

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

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

    设置copylocal=true,然后重建安装程序,一切正常。

    【讨论】:

      【解决方案6】:

      在过去的 2 天里,我只需要处理这个错误。事实证明,对于目标框架为 .NET 4.0 或 .NET 4.0 CP 的项目,有一些 .NET 4.5 中不存在的 DLL,在我的项目中是 Visual Basic DLL。

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

      我的项目是升级到 Visual Basic .NET (VB.net) 的 Visual Basic (VB6) 项目,它不知何故需要位于

      中的名为 Microsoft.VisualBasic.PowerPacks.Vs.dll 的 DLL

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

      我只是在意识到项目在安装 Visual Studio 的情况下运行良好后才发现这一点,但在崩溃日志中除了“System.IOException.FileNotFound”之外没有任何特定警告而崩溃。在 Visual Studio 中浏览我的项目的对象资源管理器,并通过将每个 DLL 添加到 InstallShield LE 项目中来逐个尝试每个 DLL,构建并将其复制到安装了发布软件的 VM 中,这让我(最终)得到了这个解决方案。

      希望这对其他人有所帮助。

      【讨论】:

        猜你喜欢
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多