【问题标题】:FileNotFoundException when loading dll加载 dll 时出现 FileNotFoundException
【发布时间】:2012-02-29 17:04:13
【问题描述】:

当我尝试执行我的程序时,我收到 FileNotFoundException,但是 dll 存在于同一文件夹中。这怎么可能以及如何解决问题?以下输出翻译自俄语 Windows Server 2008 R2 Foundation 的本地化消息:

C:\Oleg\bin\fast>FAST.exe

Exception: System.IO.FileNotFoundException: Can't load "QuickFASTDotNet.dll"
or dependent component. Can't find this file.
in FAST.FAST..ctor()
in FAST.Program.Main(String[] args) in C:\Oleg\fast\FAST\FAST\
Program.cs:line 474

C:\Oleg\bin\fast>dir QuickFASTDotNet.dll
    16.02.2012  16:45           117 760 QuickFASTDotNet.dll

相同的二进制文件在我的 Windows 7 机器上工作(但在另一台 Windows Server 2008 R2 Foundation 机器上不工作)。

【问题讨论】:

  • 这是什么`C:\Oleg\fast\FAST\FAST`?
  • 编译后的可执行文件的输出路径是什么? .dll 是否也输出到该目录?
  • QuickFASTDotNet.dll 引用的程序集是什么?那些也在吗?
  • @sll 我猜这是由调试器缓存的,这条路径来自开发机器。我试图启动“调试”构建。
  • @sebastian 是的。二进制文件在开发机器上工作。当我将它们复制到另一台机器时,它们停止工作

标签: c# .net filenotfoundexception


【解决方案1】:

请查看Debugging Assembly Loading Failures

最可能的原因是您的服务器机器上的 GAC 中未安装某些相关文件,或者 x86/x64 不匹配。

【讨论】:

  • 我已经安装了 Microsoft SDK 来解决问题,因为我想检索 Fusion 日志,仅此而已。刚刚安装 Microsoft SDK 解决了问题,现在应用程序启动了。
【解决方案2】:

也许,QuickFASTDotNet.dll 调用了另一个库的某些函数,而这些库未找到。可以使用dllexp查看。

【讨论】:

    【解决方案3】:

    当文件被 Windows 阻止时,我遇到了同样的错误,因为它是从另一台计算机复制的。右键单击dll文件,然后单击安全选项卡中的“取消阻止”按钮

    https://superuser.com/questions/38476/this-file-came-from-another-computer-how-can-i-unblock-all-the-files-in-a

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多