方法一:改动启动项目的平台是 x86 或者 x64,在 debug 下面新建 x86 和 x64 文件夹,分别
将 32 位和 64 位不带“bundle”的 (非托管部分和托管部分分别编译)下的 SQLite.Interop.dll 拷
贝到上述新建相应的文件夹,在项目中直接应用 system.data.sqlite.dll 即可。项目会根据设定
的平台查到相应的 SQLite.Interop.dll。此方法不能将平台设置为 any cpu。
方法二: System.Data.SQLite.dll 为带有“bundle”字样的表示动态库是按混合模式编译的
在项目中新建类
public class AssemblyResolver
{
public static void HandleUnresovledAssemblies()
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += currentDomain_AssemblyResolve;
}
public static Assembly currentDomain_AssemblyResolve(object sender,
ResolveEventArgs args)
{
if (args.Name.Contains("System.Data.SQLite"))
{
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
"Native");
if (IntPtr.Size == 8) // or for .NET4 use
Environment.Is64BitProcess
{
path = Path.Combine(path, "64"); //64位
System.Data.SQLite.dll路径
}
else
{
path = Path.Combine(path, "32"); ////32位
System.Data.SQLite.dll路径
}
path = Path.Combine(path, "System.Data.SQLite.dll");
Assembly assembly = Assembly.LoadFrom(path);
return assembly;
}
return null;
}
}
在 Program.cs 新建 form 之前调用 AssemblyResolver. HandleUnresovledAssemblies();即
可