【问题标题】:Apps only works when Visual Studio is installed?应用程序仅在安装 Visual Studio 时有效?
【发布时间】:2010-02-03 23:39:11
【问题描述】:

我有一个 DLL,它被许多应用程序使用。它们在我的开发机器上编译和运行得很好。但是,如果我尝试部署它们,当我尝试运行它们时,我只会从 Windows 收到标准的“您的应用程序已崩溃”消息。我想,由于它们是 .NET,我可以安装 Visual Studio 并查看异常情况。但是一旦我安装了 Visual Studio,一切正常!我试图识别 VS 安装的任何东西(如某些版本的 .NET 框架)并尝试复制它,但在安装 Visual Studio 本身之前仍然没有任何效果。我当然不能要求人们安装 Visual Studio 来使用我的应用程序。我能做什么?

【问题讨论】:

  • 你能发布确切的错误吗?既然它是一个DLL,它究竟是什么时候崩溃的?在 DLL 加载?什么是加载 DLL?它是如何被引用的?执行的 PE(或 dll?)是否具有管理权限?
  • 你确定你的测试机器上安装了.net框架吗?或者,确保所有 dll 都包含在与应用程序相同的文件夹中。
  • 你能弄清楚反射器的依赖关系吗?然后检查它是否不依赖于任何 Microsoft(即非 .NET 框架)或 VisualStudio 程序集。
  • 在将构建类型发送到另一台计算机之前,您是否将构建类型更改为发布?

标签: .net visual-studio


【解决方案1】:

如果您从控制台应用程序引用 DLL,它应该在崩溃时将堆栈跟踪转储到控制台...这可能会有所帮助。

另外,请尝试enabling the Fusion log 来帮助调试查找参考的问题。

【讨论】:

    【解决方案2】:

    这很可能是一个依赖于 C 运行时库 (CRT) 的 DLL。您需要确保部署 DLL 的 Release 版本,不能分发 CRT 库的调试版本。如果您使用 /MD 选项进行编译,您还需要将 CRT DLL 部署到目标计算机。使用 /MT 编译可以避免这种情况,但如果您在 DLL 中使用托管代码,则此选项不可用。

    【讨论】:

      【解决方案3】:

      try / catch 块添加到显示异常或通过电子邮件发送异常的程序。

      另外,请确保安装了正确版本的 .Net。

      最后,检查您引用的 DLL 并确保它们都存在。

      【讨论】:

        【解决方案4】:

        尝试在目标机器上安装 .NET Framework。

        【讨论】:

          【解决方案5】:

          听起来您可能没有在部署期间交付所需的程序集。使用.Net Reflector 之类的工具来查看。
          The accepted answer在另一个问题上给出了具体说明。

          【讨论】:

            【解决方案6】:

            在你的部署机器上必须安装Microsoft Visual C++ Redistributable Package

            【讨论】:

              猜你喜欢
              • 2011-08-23
              • 2011-03-11
              • 1970-01-01
              • 2022-06-25
              • 1970-01-01
              • 2011-03-16
              • 1970-01-01
              • 2011-01-15
              • 1970-01-01
              相关资源
              最近更新 更多