当程序集确实存在时,“System.IO.FileNotFoundException:无法加载文件或程序集”

时间:2009-10-08 22:34:14

标签: vb.net filenotfoundexception assembly-loading

作为从.net 1.1迁移到.net 3.5的一部分,我们不得不更换一些供应商DLL。

其中一个在我们使用它的4个点中只有1个点给我们带来麻烦:

故障点是一个Windows窗体项目,它使用反射来动态加载一些运行长时间运行进程的DLL。其中一个长时间运行的进程是依赖于我们的一个供应商DLL的代理

我们在第一次输入引用库的函数时得到了缺少的汇编异常。我已经检查了愚蠢的事情,比如我们是否忘记将旧版本的引用移动到新版本,但事实并非如此。我还检查了项目的bin目录,并且汇编就在那里。

有没有人遇到过.net 2.0运行时拒绝加载这样的程序集的情况?如果是这样,我们如何解决问题。

其他信息:

在这种情况下,特定供应商是dtSearch,这是引发错误的边界:

Private Sub BuildIndex()
    SetIndexOptions()
    ExecuteIndexJob()
End Sub

Private Sub SetIndexOptions()
    'Body removed for brevity
End Sub

在SetIndexOptions中引用了库。输入BuildIndex(),但调用SetIndexOptions时会发生异常。该功能永远不会被输入。

3 个答案:

答案 0 :(得分:4)

如果您仍然遇到问题,可以使用Assembly Binding Log Viewer (Fuslogvw.exe)标识应用程序加载的程序集。此工具是.NET Framework的一部分。这将为您提供所有相关组件的详细信息。

我在使用第三方程序集时曾经使用过这个,非常有用

答案 1 :(得分:1)

如果无法加载其中一个依赖程序集,即使程序集确实存在,也可以引发FileNotFoundException。

尝试使用Dependency Walker检查并查看所有相关程序集也存在。

答案 2 :(得分:1)

原来将默认的编译选项从VS2003更改为VS2008并且编译错误的位数:\现在我觉得有点傻!