Leo*_*ens 4 sqlite windows-runtime sqlite-net
我正在构建一个Windows 8应用程序,现在我想在这个应用程序中使用SQLite.我SQLite for Windows Runtime通过Visual Studio 2013扩展管理器安装,并sqlite-net通过NuGet 添加到我的项目中.
我正在尝试在app.xaml.cs中创建一个数据库OnLaunched,但是在运行项目时遇到了这个异常:
无法加载DLL的'sqlite3':找不到指定的模块.(来自HRESULT的异常:0x8007007E)
这很奇怪,因为在编译期间没有错误.无论如何,我认为它试图告诉我,我需要引用一个额外的DLL:,sqlite3.dll但这不起作用.我的文件系统上有6个不同的DLL:ARM,x64和x86的调试版和发行版.我尝试将x86发布版本添加到我的项目中,但这会导致此异常:
无法添加对"C:\ Users\Leon\Documents\Visual Studio 2013\Projects\Googalytics\packages\SQLite\x86\sqlite3.dll"的引用.请确保该文件是可访问的,并且它是有效的程序集或COM组件.
令人遗憾的是,sqlite-net的文档很糟糕,它已经过时了(示例甚至不再起作用),它非常不完整,也没有提到手动添加DLL.所以我有两个问题:
编辑:我用来创建数据库的代码是:
private void InitializeDatabase()
{
var db = new SQLiteConnection("Googalytics");
db.CreateTable<Account>();
db.CreateTable<WebProperty>();
db.CreateTable<Profile>();
}
Run Code Online (Sandbox Code Playgroud)
我从这里打电话给那个方法:
InitializeDatabase();
if (rootFrame.Content == null)
{
// When the navigation stack isn't restored navigate to the first page,
// configuring the new page by passing required information as a navigation
// parameter
if (!rootFrame.Navigate(typeof(MainPage), args.Arguments))
{
throw new Exception("Failed to create initial page");
}
}
// Ensure the current window is active
Window.Current.Activate();
Run Code Online (Sandbox Code Playgroud)
edit2:有关我的设置的更多信息:
您的项目的构建模式当前设置为Any CPU,默认值是什么.因为SqLite程序集不是作为AnyCPU构建的,所以需要将构建模式设置为X86并添加X86 SqLite引用.
部署应用程序时,还需要创建3个包而不是1个AnyCPU包.
由于您的项目是AnyCPU,因此在尝试添加x86时会收到错误消息,因此x86对AnyCPU无效.
我试图复制你的问题.我安装了SQLite for Windows Runtimefor Visual Studio Ultimate 2012,之后我创建了一个Windows应用商店项目,然后添加了SqLite引用,之后我添加了sqlite-net最后我添加了用于创建数据库的代码.
我稍微修改了一下代码(路径和表格).但我的代码完全没有错误.
我自己不需要引用SqLite程序集.因为通过在Visual Studio中安装扩展,您可以在扩展列表中获得引用(仍然需要选择它,只是不添加dll):

但仍然像我在第一个答案中所说,你需要将构建模式设置为"任何CPU"以外的其他模式
我的示例是在我的skydrive上(当测试设置配置为x86时).
Db路径:
var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite");
var db = new SQLite.SQLiteConnection(dbPath);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3497 次 |
| 最近记录: |