2

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

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

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

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

4

3 回答 3

1

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

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

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

在此处输入图像描述

我个人会尝试最后一个。

于 2013-03-27T17:35:55.777 回答
0

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

于 2013-03-27T17:36:43.173 回答
0

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

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

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

于 2013-03-27T17:40:04.177 回答