2009-10-08 196 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的一部分。這將爲您提供所有相關程序集的詳細信息。

我已經在過去與第三方組件,非常有用

相關問題