【问题标题】:FileNotFoundException thrown for a referenced assembly为引用的程序集引发 FileNotFoundException
【发布时间】:2010-07-13 14:39:32
【问题描述】:

当我第一次尝试使用在我引用的程序集中定义的类时,我得到了一个非常奇怪的FileNotFoundException。程序集没有改变,项目文件中的位置与磁盘上的物理路径正确对应。

当我将安装程序添加到 Windows 服务和设置项目时,这突然开始在由两个库项目、一个 Windows 服务项目和一个控制台应用程序组成的解决方案中失败。但是,我将控制台应用程序作为单个启动对象,控制台应用程序和服务/安装程序项目之间没有任何引用。

【问题讨论】:

  • 你能粘贴整个异常堆栈跟踪吗?

标签: c# dll reference filenotfoundexception


【解决方案1】:

如果您启用程序集绑定日志记录,您会发现 FileNotFoundException 将在其中包含丢失文件的完整融合探测日志。通常这会使问题立即变得非常明显。

http://msdn.microsoft.com/en-us/library/e74a18c4(VS.80).aspx

【讨论】:

  • OK - 我启动并运行了记录器,管理它以捕获异常,并发现控制台应用程序正在其自己的输出目录 (\bin\Debug) 中寻找“丢失的”程序集而不是它应该寻找的地方。我查看了项目文件,找到并删除了对另一个 dll的引用,突然这个问题就解决了。不要问我如何,但它有效。 :P
  • 从哪里引用程序集,以及如何在运行时解析程序集是两件完全不同的事情,这让很多人感到惊讶。上面的链接可能引用了绑定探测顺序,但 IRRC 程序集将首先从 GAC 中解析,然后是私有 bin 路径(bin/debug),然后是其他任何地方。因此,如果该路径中有该程序集的副本(因为它是另一个依赖项的依赖项),那么它将从那里加载。
猜你喜欢
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多