添加对 SQLite.Interop.dll 的引用时出错
Error on add reference to SQLite.Interop.dll
我需要读取特定站点的一些 cookie,并且我在 Internet 上找到了一个代码,可能对我有帮助。这段代码使用了一些 SQLite 的特定方法,为了使它有必要添加对一些 SQLite dll 的引用,但问题是,当我去添加 SQlite.Interop.dll 时,这会产生一个错误:
A reference to 'C:\Program Files\System.Data.SQLite12\bin\SQLite.Interop.dll' could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component.
所以,有人可以帮我解决这个麻烦。我已经在互联网上的几个网站上看到了与它相关的东西,但直到现在,我还没有成功。
这是我找到的代码,他需要SQLite dll文件参考,就像我上面说的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static public IEnumerable<Tuple<string, string>> ReadCookies(string hostName)
{
if (hostName == null) throw new ArgumentNullException(hostName);
var dbPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\Default\Cookies";
if (!System.IO.File.Exists(dbPath)) throw new System.IO.FileNotFoundException("Cant find cookie store", dbPath);
var connectionString = "Data Source=" + dbPath + ";pooling=false";
using (var conn = new System.Data.SQLite.SQLiteConnection(connectionString))
using (var cmd = conn.CreateCommand())
{
var prm = cmd.CreateParameter();
prm.ParameterName = hostName;
prm.Value = hostName;
cmd.Parameters.Add(prm);
cmd.CommandText = "SELECT name,encrypted_value FROM cookies WHERE host_key = " + hostName;
conn.Open();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var encryptedData = (byte[])reader[1];
var decodedData = System.Security.Cryptography.ProtectedData.Unprotect(encryptedData, null, System.Security.Cryptography.DataProtectionScope.CurrentUser);
var plainText = Encoding.ASCII.GetString(decodedData);
yield return Tuple.Create(reader.GetString(0), plainText);
}
}
conn.Close();
}
}
static void Main(string[] args)
{
var list = ReadCookies("facebook.com");
foreach (var item in list)
Console.WriteLine("{0} | {1}", item.Item1, item.Item2);
Console.WriteLine();
Console.ReadLine();
}
}
}
使用 NuGet 添加包
Install-Package System.Data.SQLite
它将下载并添加对 SQLite 的适当引用。看起来您正在尝试添加错误的引用。您应该从 SQLLite 二进制文件中添加对二进制文件的引用,例如 Core / EF6 / Linq。
我遇到了同样的错误,我能够通过以下步骤解决它:
转到位置(即)"C:\Program Files\System.Data.SQLite15\bin",您将看到 SQLite.Interop.dll 和 SQLite.Interop
复制这两个文件,然后转到您的应用程序 bin 位置(即)“.......\SQliteExample\SQliteExample\bin\Debug”并将它们粘贴到那里。
我需要读取特定站点的一些 cookie,并且我在 Internet 上找到了一个代码,可能对我有帮助。这段代码使用了一些 SQLite 的特定方法,为了使它有必要添加对一些 SQLite dll 的引用,但问题是,当我去添加 SQlite.Interop.dll 时,这会产生一个错误:
A reference to 'C:\Program Files\System.Data.SQLite12\bin\SQLite.Interop.dll' could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component.
所以,有人可以帮我解决这个麻烦。我已经在互联网上的几个网站上看到了与它相关的东西,但直到现在,我还没有成功。
这是我找到的代码,他需要SQLite dll文件参考,就像我上面说的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static public IEnumerable<Tuple<string, string>> ReadCookies(string hostName)
{
if (hostName == null) throw new ArgumentNullException(hostName);
var dbPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\Default\Cookies";
if (!System.IO.File.Exists(dbPath)) throw new System.IO.FileNotFoundException("Cant find cookie store", dbPath);
var connectionString = "Data Source=" + dbPath + ";pooling=false";
using (var conn = new System.Data.SQLite.SQLiteConnection(connectionString))
using (var cmd = conn.CreateCommand())
{
var prm = cmd.CreateParameter();
prm.ParameterName = hostName;
prm.Value = hostName;
cmd.Parameters.Add(prm);
cmd.CommandText = "SELECT name,encrypted_value FROM cookies WHERE host_key = " + hostName;
conn.Open();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var encryptedData = (byte[])reader[1];
var decodedData = System.Security.Cryptography.ProtectedData.Unprotect(encryptedData, null, System.Security.Cryptography.DataProtectionScope.CurrentUser);
var plainText = Encoding.ASCII.GetString(decodedData);
yield return Tuple.Create(reader.GetString(0), plainText);
}
}
conn.Close();
}
}
static void Main(string[] args)
{
var list = ReadCookies("facebook.com");
foreach (var item in list)
Console.WriteLine("{0} | {1}", item.Item1, item.Item2);
Console.WriteLine();
Console.ReadLine();
}
}
}
使用 NuGet 添加包
Install-Package System.Data.SQLite
它将下载并添加对 SQLite 的适当引用。看起来您正在尝试添加错误的引用。您应该从 SQLLite 二进制文件中添加对二进制文件的引用,例如 Core / EF6 / Linq。
我遇到了同样的错误,我能够通过以下步骤解决它:
转到位置(即)"C:\Program Files\System.Data.SQLite15\bin",您将看到 SQLite.Interop.dll 和 SQLite.Interop
复制这两个文件,然后转到您的应用程序 bin 位置(即)“.......\SQliteExample\SQliteExample\bin\Debug”并将它们粘贴到那里。