2011-02-06 176 views
0

我做了一個C#項目,並能流利地配置SQLite的,甚至沒有添加引用System.Data.SQLite.dll。現在在嘗試VB.NET項目時,使用或不使用參考,我得到一個FluentNHibernate; SQLite的; FileNotFoundException異常(System.Data.SQLite)

FileNotFoundException: Could not load file or assembly 'System.Data.SQLite' or one of its dependencies. The system cannot find the file specified.

難道NHibernate的或FluentNHibernate尋找這個DLL(?)又是如何得出他們不看的參考?或者我錯過了什麼?

順便說一句,有成才叫「FusionLog」,其中說:

 
=== Pre-bind state information === 
LOG: User = PC\windowslogin 
LOG: DisplayName = System.Data.SQLite 
(Partial) 
LOG: Appbase = file:///(Project folder)./bin/Debug/ 
LOG: Initial PrivatePath = NULL 
Calling assembly : NHibernate, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4. 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: (project folder/name).vshost.exe.Config 
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config. 
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). 
LOG: The same bind was seen before, and was failed with hr = 0x80070002. 

回答

0

檢查你的C#項目的bin文件夾,該DLL可能已經找到了自己在那裏。如果它已經刪除,並且它會有相同的錯誤,或者它會在您構建時將其複製到那裏。如果是後者,它會實現依賴並複製該文件。

當在其中一個搜索路徑或GAC中找不到dll時,會發生上述錯誤。搜索路徑包括bin文件夾(第一個)和其他一些系統文件夾。

要解決VB問題,請參考SQLite程序集並確保您有「CopyLocal」。除非你有這個,否則VS不會將程序集複製到out路徑,因爲你沒有明確地引用它。 NHibernate會動態加載該程序集。

+0

謝謝!沒有意識到他們需要CopyLocal,並將其視爲False。 – bretddog 2011-02-06 22:51:28

相關問題