C# 为引用的程序集引发FileNotFoundException

C# 为引用的程序集引发FileNotFoundException,c#,dll,reference,filenotfoundexception,C#,Dll,Reference,Filenotfoundexception,我第一次尝试使用在我引用的程序集中定义的类时,抛出了一个非常奇怪的FileNotFoundException。程序集未更改,并且项目文件中的位置与磁盘上的物理路径正确对应 当我向windows服务和安装项目中添加安装程序时,在一个由两个库项目(一个windows服务项目和一个控制台应用程序)组成的解决方案中,这突然开始失败。但是,我将console应用程序作为单个启动对象,console应用程序和服务/安装程序项目之间没有任何引用。如果启用程序集绑定日志记录,您会发现FileNotFoundEx

我第一次尝试使用在我引用的程序集中定义的类时,抛出了一个非常奇怪的
FileNotFoundException
。程序集未更改,并且项目文件中的位置与磁盘上的物理路径正确对应


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

如果启用程序集绑定日志记录,您会发现FileNotFoundException将包含丢失文件的完整fusion探测日志。通常情况下,这会让问题很明显


请参见

能否粘贴整个异常堆栈跟踪?好的-我启动并运行了记录器,管理它以捕获异常,发现console应用程序正在其自己的输出目录(\bin\Debug)中查找“缺失”的程序集,而不是在它应该查找的位置。我查看了项目文件,找到并删除了对另一个dll的引用,突然这个问题解决了。别问我怎么做,但它是有效的在这里引用程序集,以及在运行时如何解析程序集是两件完全不同的事情,这让很多人感到惊讶。上面的链接可能引用了绑定探测顺序,但IRRC程序集将首先从GAC解析,然后从私有bin路径(bin/debug)解析,然后再从其他任何位置解析。因此,如果该路径中有该程序集的副本(因为它是另一个依赖项的依赖项),则将从该路径加载该程序集。