I've broken the code down to the smallest possible statement:
Dim cn As System.Data.SQLite.SQLiteConnection
And I get the following error when calling the code from a WinForm applicaiton:
System.BadImageFormatException: Could not load file or assembly 'System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or one of its dependencies. An attempt was made to load a program with an incorrect format. File name: 'System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139'
Yet calling the same piece of code from MS Unit Test I do not get the error, plus the full code set works as expected.
SqlLite contains unmanaged code, you can't run it on a 64-bit operating system unless you deploy the 64-bit version. Quick fix: Project + Properties, Build tab, Platform Target = x86.
Make sure you use correct assembly with respect to 32 and 64 bits.
I solved the problem by downloading a new version of the SQLite DLL via NuGet: http://gurustop.net/blog/2011/05/19/sqlite-database-nuget-package-common-problems-solved/
来源:https://stackoverflow.com/questions/2048914/what-causes-system-badimageformatexception-when-constructing-system-data-sqlite