0

曾几何时,我问是否有办法在没有两个二进制文件的 windows/linux 上使用 sqlite db。有人建议使用单声道,我问 Windows 上的 .NET 是否需要单声道安装,但被告知不需要。

我从我的 linux vm 中获取了这个参考文件

mono\gac\Mono.Data.Sqlite\2.0.0.0__0738eb9f132ed756\Mono.Data.Sqlite.dll

然后我在 main() 中写了这两行

var connection = new Mono.Data.Sqlite.SqliteConnection("Data Source=test.db3");
connection.Open();

我得到了这个例外

System.TypeInitializationException was unhandled
  Message=The type initializer for 'Mono.Data.Sqlite.SqliteConvert' threw an exception.
  Source=Mono.Data.Sqlite
  TypeName=Mono.Data.Sqlite.SqliteConvert
  StackTrace:
       at Mono.Data.Sqlite.SqliteConvert.Split(String source, Char separator)
       at Mono.Data.Sqlite.SqliteConnection.ParseConnectionString(String connectionString)
       at Mono.Data.Sqlite.SqliteConnection.Open()
       at rsa_test.Program.Main(String[] args) in Program.cs:line 56
  InnerException: System.ArgumentException
       Message=Value does not fall within the expected range.
       Source=mscorlib
       StackTrace:
            at System.Runtime.CompilerServices.RuntimeHelpers.InitializeArray(Array array, RuntimeFieldHandle fldHandle)
            at Mono.Data.Sqlite.SqliteConvert..cctor()
       InnerException: 

那么在没有安装单声道的情况下就不能使用单声道 sq​​lite 吗?还是我做错了什么?

4

2 回答 2

0

我遇到了同样的问题,发现dotConnect for SQLite是另一种与 Mono 和 Windows 兼容的解决方案。

于 2013-05-14T01:51:37.210 回答
0

你不能使用 .NET 4.0,你必须使用 .NET 3.5

有一个错误:https ://bugzilla.xamarin.com/show_bug.cgi?format=multiple&id=152

于 2014-01-26T12:09:06.897 回答