曾几何时我问if there was a way to use a sqlite db on windows/linux w/o two binaries。有人建议使用mono,我问是否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:
所以不可能使用没有单声道的单声道sqlite吗?或者我做错了什么?
答案 0 :(得分:0)
我遇到了同样的问题,发现dotConnect for SQLite是另一种兼容Mono和Windows的解决方案。
答案 1 :(得分:0)
您不能使用.NET 4.0,而是使用.NET 3.5
有一个错误:https://bugzilla.xamarin.com/show_bug.cgi?format=multiple&id=152