Ошибка при добавлении ссылки на SQLite.Interop.dll
Мне нужно прочитать некоторые файлы cookie определенного сайта, и я нашел код в Интернете, который, вероятно, может мне помочь. Этот код использует специфику некоторых методов SQLite, и для этого необходимо добавить ссылки на некоторые библиотеки SQLite, но проблема в том, что когда я добавлю SQlite.Interop.dll, выдается сообщение об ошибке:
Не удалось добавить ссылку на "C:\Program Files\System.Data.SQLite\2012\bin\SQLite.Interop.dll". Убедитесь, что файл доступен, и что он является допустимой сборкой или компонентом COM.
Итак, кто-то может помочь мне решить эту проблему. Я уже видел на нескольких сайтах в Интернете кое-что относительно этого, но до сих пор у меня не было успеха.
Это код, который я нашел, и ему нужна ссылка на dll-файл SQLite, как я уже говорил выше.
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();
}
}
}
2 ответа
Добавьте пакет, используя NuGet
Install-Package System.Data.SQLite
Он загрузит и добавит соответствующие ссылки для SQLite. Похоже, вы пытаетесь добавить неправильные ссылки. Вы должны добавить ссылки на двоичные файлы, такие как Core / EF6 / Linq из двоичных файлов SQLLite.
У меня была та же ошибка, и я смог ее исправить, выполнив следующие действия:
Перейдите в папку (то есть) "C:\Program Files\System.Data.SQLite\2015\bin", и вы увидите SQLite.Interop.dll и SQLite.Interop
Скопируйте эти два файла и затем перейдите в папку bin вашего приложения (то есть) "........\SQliteExample\SQliteExample\bin\Debug" и вставьте их туда.