【问题标题】:Can't use an external DLL : FileNotFoundException无法使用外部 DLL:FileNotFoundException
【发布时间】:2011-04-11 07:55:24
【问题描述】:

我有 2 个项目。 第一个只是生成一个 DLL。

第二个需要第一个 DLL。 但是当我从 DLL 调用一个方法时,我有一个 FileNotFoundException,并带有以下消息:

BDD,版本=1.0.0.0,文化=中性,PublicKeyToken=null

我确定该文件存在。 我哪里错了?

【问题讨论】:

  • 您是否已将该 DLL 作为引用添加到尝试使用它的项目中?或者至少将 DLL 复制到与编译的可执行文件相同的目录中?
  • 运行时project1.dll和project2.exe在同一个文件夹吗?
  • 项目/程序集的名称是什么?

标签: c# dll filenotfoundexception


【解决方案1】:

同意基伦 (+1)。也许它正在找到您的 DLL,但它需要另一个无法找到的依赖 DLL。或者是否存在签名问题(也许您正在寻找另一个 DLL 版本等...) 要打开融合日志(您必须创建几个注册表项):

顺便说一句,fusion 是包含加载程序集的逻辑的 DLL(如果指定,则探测本地路径和子文件夹,查看 GAC,...)。运行可执行文件后,您会发现一个日志,详细说明 CLR 在加载引用的程序集时发现的问题(忽略 NativeImage 日志,仅检查默认日志)。

【讨论】:

    【解决方案2】:

    您能否提供完整的信息 - 并且:

    请记住,FileNotFoundException 可能是被引用 DLL 的依赖,而不仅仅是被引用 DLL 本身。

    如果 DLL 确实存在,您可能需要打开程序集绑定日志(Fusion 日志)以查看发生了什么。

    【讨论】:

    • 我认为您需要提供有关如何打开该日志的信息。
    • 我将 DLL 导入 VisualStudio,没有问题。但是当我从 DLL 调用一个方法时,我收到了 filenotfound...
    • 你不能'导入'一个DLL,你的意思是添加一个引用吗?这并不一定意味着什么。也许您可以回答人们提出的问题 - 完整的错误是什么,DLL 是否与可执行文件位于同一目录中,等等?
    • 是的,DLL 位于同一目录中。完全错误:pastebin.com/zpZgJfMf
    • 第 18 行到第 21 行说“正在尝试从 URL 下载 DLL..”,它正在查找 /bin/debug/BDD.DLL,但没有找到它。 DLL 肯定在正确的位置,C:/IHMAdministrateur/IHMAdministrateur/bin/Debug/BDD.DLL 吗?
    【解决方案3】:

    简答:DLL 需要与 EXE 位于同一目录中。

    是这样吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多