简介: 我在 VS2017 上使用 C-Sharp 来定位 64 位 Win10 机器上的 Sqlite3 文件。框架使用是4.5,因此可以掌握与 Win7 的迁移。客户端也没有想释放的拆分版本,所以产品必须支持“任何CPU”。
错误参考: '无法加载文件或程序集' System.Data.SQLite.dll '或其依赖项之一。'
目标平台:任何 CPU
错误原因(在这种情况下): DLL 文件针对 x64 系统,而我被迫继续使用“任何 CPU”选项。
此外: 我已经从http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki下载了两个 SQLite DLL 文件 。从那里,我还恢复了 SQLite3 的准确源文件。然而,集成的最终结果是我的“使用”行没有“看到”包含 SQLite 源的 Filehandler 文件夹。
这是一个重复的问题,我已经看到了从 NuGet 包到引用行“myapp.exe/x86/sqlite3.data.dll”和“myapp.exe/x64/sqlite3.data.dll”的多个响应的解决方案' 而不标识要在其中插入这些行的应用程序文件位置。让人想知道它们是如何在类文件中被引用的。
动态结果表明,使用 DLLImport,您可以将方法(即 MYSQLConnector)重新构建为方法。尽管那时我怀疑课程中有很多重复,但加载项目时的一些客户端要求,例如 Windows 版本阅读。
客户端不希望使用 NuGet 包。因为这个项目不包括第 3 方参考处理。
我该如何解决这个问题? 这样我的表格,使用方法:
SQLiteConnection(连接字符串)
和
SQLiteDataReader
可与“任何 CPU”选项一起使用。
更新
这是执行的底层代码,导致“任何 CPU”的错误被优先考虑
void doWork(string path) {
string valueFound = "";
if (!System.IO.File.Exists(path)) throw new System.IO.FileNotFoundException("Cant find file", path);
var connectionString = "Data Source=" + path + ";pooling=false";
using (var conn = new SQLiteConnection(connectionString))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT value FROM values WHERE value = ''";
conn.Open();
using (SQLiteDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
valueFound = (String)reader["value1"];
});
}
}
}
MessageBox.Show("We have a value: " + valueFound);
}
哔哔one
相关分类