我正在开发VB.net程序,并使用System.Data.SQLite .NET预编译二进制文件。然而,它不适用于x64体系结构,我遇到了 经典的文化问题和无法加载正确文件的问题。请注意,保留HTML标签,不涉及解释。
如何将它改为适用于64位架构?也许包括32位和64位dll,在函数中进行一些操作即可。
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'
您好,以下是您需要翻译的内容:
是否有一种方法只使用一个dll,例如:
- 添加一些类似#IFDEF(x86包含某些代码部分)或其他x64代码的指令。
- 将dll合并为一个。
- 在VB.net中引用此dll。
您认为还有其他更好的想法吗?我希望只进行一次编译,而不是为x32和x64分别进行编译。
例如(32位):
请注意保留原文中的HTML标签,且不要写出解释,谢谢!Private Shared Sub OpenConection(ByRef Conn As SQLite.SQLiteConnection)
Conn = New SQLite.SQLiteConnection("Data Source=" & System.Environment.CurrentDirectory & "\database.db")
Conn.Open()
End Sub
Private Shared Sub CloseConection(ByRef Conn As SQLite.SQLiteConnection)
Conn.Close()
Conn.Dispose()
Conn = Nothing
End Sub
Public Shared Function ReturnSelect(ByVal DataTAbleName As String, ByVal sQuery As String, ByVal sWhere As String) As Data.DataTable
Dim lDT As New DataTable
Dim lTA As New SQLite.SQLiteDataAdapter
If DataTAbleName Is Nothing Then Return New DataTable(DataTAbleName)
Try
OpenConection(conexion)
lTA = New SQLite.SQLiteDataAdapter("SELECT " & sQuery & " FROM " & DataTAbleName & IIf(sWhere <> String.Empty, " WHERE ", "") & sWhere, conexion)
lTA.Fill(lDT)
Catch ex As Exception
Throw ex
Finally
CloseConection(conexion)
lTA.Dispose()
lTA = Nothing
End Try
Return lDT
End Function
如何将它改为适用于64位架构?也许包括32位和64位dll,在函数中进行一些操作即可。
Try
Instance = Me
'Check If Homidom Run in 32 or 64 bits
If IntPtr.Size = 8 Then _OsPlatForm = "64" Else _OsPlatForm = "32"
'continue code
Catch ex As Exception
' ex.Message
End Try