2009-10-08 136 views
3

作为从.net 1.1到.net 3.5的迁移的一部分,我们必须更换一些供应商DLL。“System.IO.FileNotFoundException:无法加载文件或程序集”实际上存在程序集时

其中之一是给我们带来麻烦的只有1点了,我们用它在4点:

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

我们在首次输入引用库的函数时得到了缺失的程序集异常。我已经检查过这些愚蠢的东西,比如我们是否忘记了从旧版本到新版本的引用,但事实并非如此。我也检查了项目的bin目录,并且程序集在那里。

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

附加信息:

在这种情况下,特定供应商是dtSearch而这正是错误被抛出的boundry:

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

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

该库在SetIndexOptions引用。输入了BuildIndex(),但在调用SetIndexOptions时发生异常。该功能从未实际输入。

回答

1

原来默认的编译选项从VS2003改为VS2008,它是在错误的位数编译工作时使用这样的:\我现在觉得有点愚蠢!

1

即使程序集确实存在,如果某个相关程序集无法加载,也可能引发FileNotFoundException。

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

+0

好吧,这使事情变得复杂。我试图加载的DLL说它缺少两个我从来没有听说过的DLL(如果它意味着任何东西,IESHIMS.DLL和WER.DLL),但同时,.net 1.1版本的DLL也是缺少这些组件,并且运行正常。 –

+0

这2个装配最有可能是红鲱鱼 - 我认为大多数装配我打开缺少那些2,即使他们工作正常。 – Justin

+0

那么DLL是好的呢? –

4

如果仍有问题,可以使用Assembly Binding Log Viewer (Fuslogvw.exe)来确定应用程序加载了哪些程序集。该工具是.NET Framework的一部分。这将为您提供所有相关程序集的详细信息。

我已经在过去与第三方组件,非常有用

相关问题