【问题标题】:How do I get the executable to run on other computers without creating a setup,如何在不创建设置的情况下让可执行文件在其他计算机上运行,
【发布时间】:2013-03-27 17:29:45
【问题描述】:

我有一个程序可以绘制一个包含一些数据的文本文件。它在 VS 2010 C# 的调试/发布模式下工作。我正在使用 .Net 和 Aforge 框架。在我的参考资料中是 AForge.Math 和 System.Windows.Forms.Charting 库。

当我在 ...bin/release 文件夹中运行可执行文件时,它可以完全正常工作,这意味着当我将文本文件拖放到表单中时,会出现一个图表,这是应该的。但是,如果我将该发布文件夹复制到另一台计算机上,.exe 会运行,但是当我拖放文本文件时,它不会打印。我只是得到一个白色的空白表格。 这就是程序运行时的样子……

当它不工作时,它会做这样的事情(所以我试图将一个文本文件拖放到表单中),我得到的东西看起来像这样......

我怀疑我的问题来自使用 AForge 框架。所有的计算机都有.Net,所以当输入数据时,图表会继续工作,但正在绘制的数据来自 AForge,它不在计算机上。虽然我不完全确定。

【问题讨论】:

  • 调试/发布文件夹中是否包含 AForge DLL?

标签: c# winforms charts aforge


【解决方案1】:

您应该复制在调试或发布文件夹中找到的所有 DLL。但有时并非所有 DLL 都出现在那里。 如果您使用的是框架,可能会在安装目录或 GAC 中寻找这些 DLL

在这种情况下,AForge 是一个外部 dll,因此您有两种解决方案:

  1. 在要复制程序的所有电脑上安装 AForge
  2. CopyLocal True:在引用中,在每个 AForge DLL 中,确保 CopyLocal 为 true。检查此link 以获取有关设置 CopyLocal=true 的帮助。然后这些 DLL 将出现在您的调试/发布目录中,因此当您拖动所有引用时,所有引用都将起作用。确保复制 debug/release 文件夹中的所有文件,特别是 .dll.exe.config。一旦你让它工作,也许你可以避免复制 .pdb 文件。

我个人会尝试最后一个。

【讨论】:

  • 所以我不能只复制和粘贴 .exe 文件,我必须为整个发布文件夹执行此操作?
  • 如果您执行解决方案 1,您将能够。
【解决方案2】:

尝试将所有引用设置为 copylocal = true,这应该将 dll 的副本放在 bin\release 文件夹中,以便您可以将它们复制到另一台计算机。

【讨论】:

    【解决方案3】:

    在 Visual-Studio 中打开您的解决方案并展开解决方案资源管理器中的引用。它应该向您显示您的项目所引用的所有 DLL 的参考列表。如果使用它,它还必须包含您的 AForge 框架。

    现在您要做的就是确保目标系统上存在相同的 DLL 集: 在 exe 自己的路径中(这将适用于您的自定义 DLL,例如 AForge FW) 要么 在 GAC(全局程序集缓存)中(适用于已安装的库,例如您的 System.** 框架库和 MSOffice DLL)。

    如果缺少某些内容,只需将其他 DLL 复制到目标计算机上的 .exe 文件夹即可。

    【讨论】:

      猜你喜欢
      • 2013-03-04
      • 2018-01-06
      • 1970-01-01
      • 2023-03-19
      • 2012-11-19
      • 2012-07-19
      • 2020-04-21
      • 2013-08-08
      • 2018-04-23
      相关资源
      最近更新 更多