【问题标题】:C# project 2010, standalone executable on other computerC# 项目 2010,其他计算机上的独立可执行文件
【发布时间】:2010-07-20 07:01:07
【问题描述】:

我有一个在 Visual Studio Express 2010 中创建的 C# 项目。该程序使用依赖/调用 C++ dll 的第 3 方 C# 类。我刚刚将 filename.dll 复制到项目文件夹的 bin/debug 和 bin/release 文件夹中,应用程序运行良好。

我假设我可以将项目的发布可执行文件复制到另一台计算机并运行它,只要 filename.dll 与可执行文件位于同一目录中。但是,在安装了正确框架等的另一台计算机上尝试此操作时,程序会因 system.dllnotfoundexception 而崩溃。

奇怪的是,我的朋友报告说该程序在他安装了 Visual Studio 的计算机上运行,​​但没有安装 Visual Studio 的计算机上没有,尽管我实际上没有看到这个。

这可能是什么原因造成的?以及如何让发布可执行文件在另一台机器上运行?

感谢您的回复! -追逐

【问题讨论】:

  • 检查是否有任何有用的错误信息

标签: c# .net visual-studio-2010 interop


【解决方案1】:

确保您已安装 Visual C++ 运行时(VS2005、VS2008、VS2010)。

【讨论】:

    【解决方案2】:

    如果你的 c++ dll 是由 Visual Studio 构建的,它可能取决于 CRT,这里有两件事要检查:

    • 如果它取决于发布或调试 CRT。 Microsoft 不授予您分发调试版本的权利,除非出于调试目的,因此这可能是一个问题。
    • 它依赖的女巫版本
      • vs2010 的最新版本可以复制到与可执行文件相同的目录中(msvcp100.dll for c++ msvcr100.dll for C)
      • 以前的版本需要作为并行程序集安装,因此必须运行它们的设置(某些版本如 VS2005 包含在框架安装中,但其他版本如 VS2005 SP1 需要单独安装)

    无论如何,调试此类问题的最佳方法是在有问题的计算机上安装Dependency Walker(免费),让它告诉您缺少什么 dll。

    【讨论】:

      【解决方案3】:

      解决此问题的最简单(尽管可能不是“最佳”)解决方案是将安装项目添加到您的解决方案中。安装项目将帮助您找到任何依赖项,并在安装期间使它们可用。

      您需要采取的步骤如下:

      1. 将安装项目添加到您的解决方案(可在添加项目.../安装模板中找到)
      2. 右击项目,选择“Add/Project output...”,添加你程序的启动项目。
      3. 右键单击项目并选择“查看/自定义操作”。
      4. 右键单击根节点,选择“添加自定义操作...”,然后从“应用程序文件夹”中添加“来自 [您的项目名称] 的主要输出”。

      现在,当您编译时,会创建一个 .msi 安装程序。在另一台计算机上运行此安装程序,您的程序将被安装并可运行。要卸载,请再次运行安装程序,或从控制面板下的“添加/删除程序”中删除该程序。

      【讨论】:

        猜你喜欢
        • 2012-07-19
        • 2018-04-23
        • 1970-01-01
        • 2013-03-04
        • 1970-01-01
        • 1970-01-01
        • 2015-10-13
        • 2023-03-19
        • 2021-10-04
        相关资源
        最近更新 更多