【问题标题】:Program didn't see DLL file程序没有看到 DLL 文件
【发布时间】:2016-11-29 06:43:46
【问题描述】:

我正在用 C# 语言编写一个程序,并且我正在使用一个特殊的 Dll 文件来存储类以及我正在使用的方法。在项目中,我添加了 Dll 文件作为参考,然后在代码处打印 using "library_name"。它在我正在制作的计算机上完美运行(视觉工作室在哪里),在另一台计算机上运行也很棒。但是我的程序无法在位于第二台计算机上的虚拟机上运行。当我试图打开它时,我遇到了一个异常,例如: “无法加载文件或程序集 'spd_lib, Version=1.0.4244.21567, Culture=neutral,PublicKeyToken=null” 或者它的依赖项。系统找不到指定的文件。”

在某处我读到.csproj 文件有一个字符串,用于存储所有项目的引用,所以我尝试修改它并提供位于虚拟机上的库的绝对路径,但它无论如何都不起作用并且有同样的例外。你能推荐我做点什么吗?

忘了说,我的程序在 WInForms 上,所以它可以完美地打开并在虚拟机上运行,​​但是当我按下按钮时(有一个事件,我声明了一个位于 Dll 文件的类对象)它有异常并且坠毁。所以,恐怕不是.Net框架问题:/

【问题讨论】:

  • 您是否复制了整个bin\Release 文件夹?您是否尝试将其复制到计算机上的另一个位置并从那里启动?
  • 您可以使用Process Monitor。仅将视图过滤到您的进程并注意 FILE NOT FOUND 错误。
  • Oliver,是的,我复制了所有 bin\Release 文件夹。实际上我也尝试复制所有解决方案文件夹。但不幸的是,它仍然无法正常工作。所以,我会尽量使用你推荐的程序,谢谢!

标签: c# .net winforms dll


【解决方案1】:

您托管应用程序的虚拟机是否安装了 .Net 框架? 在您安装了 Visual Studio 时,您的计算机中安装了系统 dll,但虚拟机可能缺少这些。

【讨论】:

  • 是的,它有一个 .Net 框架 4.0。并且程序没有找到我需要的定位方法的库。忘了说,我的程序在 WInForms 上,所以它可以完美地打开和工作,但是当我按下按钮时(有一个事件是我声明一个位于 Dll 文件的类对象)它出现异常并崩溃。所以,恐怕这不是 .Net 框架问题:/
  • 好的,您是否对该类对象使用任何依赖注入?
  • 没有。我只是使用这个 dll 文件来存储类,没有其他依赖项。
【解决方案2】:

该 dll 必须存在于虚拟机上,您的程序才能运行。为此,您必须在此特定 dll 的 Visual Studio 首选项窗口中将其标记为 Copy Local(选择您的引用时按 F4) - 当您这样做时,它将被复制到 bin 文件夹(或任何其他文件夹当您发布应用程序时)。

如果它不起作用,您需要检查应用程序从何处请求此文件。对于此任务,您可以使用fuslogvw 或使用Process Monitor 进行检查。

【讨论】:

  • 是的,我使用“复制本地”设置,但它仍然无法正常工作。我将尝试使用您推荐的程序来检查应用程序请求。 Dziekuje!
  • @Ramon 也关注这部分错误:“或者它的依赖项”可能是 dll 存在但 'spd_lib' 所需的 dll 之一是不见了。
  • 这很奇怪,但不,它只是一个库,并且没有其他依赖项。我安装在虚拟机视觉工作室上,一切都神奇地开始工作了!我不知道为什么会这样,不应该这样,只是很奇怪:/但感谢您的帮助!
  • 因此,如果在安装 VS 后一切正常,则必须对随 VS 提供的 dll 有一些依赖性。我认为您应该做的(如果您想找到根本原因)是在没有安装 VS 和安装了 VS 的进程监视器下运行并比较跟踪。在那里你应该看到什么 dll 有问题。
  • 好的!谢谢帕维尔!
猜你喜欢
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 2011-05-28
  • 2016-11-01
  • 2021-11-05
相关资源
最近更新 更多