作为从.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时会发生异常。该功能永远不会被输入。
答案 0 :(得分:4)
如果您仍然遇到问题,可以使用Assembly Binding Log Viewer (Fuslogvw.exe)标识应用程序加载的程序集。此工具是.NET Framework的一部分。这将为您提供所有相关组件的详细信息。
我在使用第三方程序集时曾经使用过这个,非常有用
答案 1 :(得分:1)
如果无法加载其中一个依赖程序集,即使程序集确实存在,也可以引发FileNotFoundException。
尝试使用Dependency Walker检查并查看所有相关程序集也存在。
答案 2 :(得分:1)
原来将默认的编译选项从VS2003更改为VS2008并且编译错误的位数:\现在我觉得有点傻!