我正在尝试使用Visual Studio 2013上的WinRT 8.1上的SQLite进行编程。我安装了带有WinRT 8.1 VSIX的SQLite和用于Windows Phone 8.1的SQLite,并且还从nuget加载了sqlite-net
。
我用来得到以下错误:
An exception of type 'System.BadImageFormatException' occurred in TimeTableAPP.Windows.exe but was not handled in user code
来自这两行代码:
SQLiteAsyncConnection cneu = new SQLiteAsyncConnection("newDB.db");
await cneu.CreateTableAsync<TestTable>();
与
相同var conn = new SQLiteAsyncConnection(System.IO.Path.Combine(Windows.ApplicationModel.Package.Current.InstalledLocation.Path, "newDB.db"));
await cneu.CreateTableAsync<TestTable>();
使用TestTable
[Table("TestTable")]
public class TestTable
{
[PrimaryKey, AutoIncrement]
public long Id { get; set; }
public string nomnomnom { get; set; }
}
这个问题似乎经常发生,通常可以通过将平台目标设置为x86来解决。正如你所看到的那样:
我不知道该怎么办了。我对VC2013安装进行了修复,卸载并重新安装了VSIX,并为共享Windows 8.1和Windows Phone 8.1制作了一个项目,Windows Phone没有触发错误,但是Windows Store App使用相同的代码触发了错误。
答案 0 :(得分:1)
根据MSDN,由于库或程序的格式错误(通常不匹配)而发生此错误 - 如果您的目标是x86,则可能会发生此错误,但如果您的目标是explcitly x64,也会发生此错误或者在你自己的代码之外存在不匹配。如果你的程序不是x86,那么简单地设置为x86就不会修复它。确保您尝试使用x64和任何CPU,并检查任何有关SQLite在其下运行的文档。
另外请不要忘记您可以尝试直接安装库而不是NuGet,因为库本身可能存在一些冲突。在你的控制之外。