我在sqlite-net
应用程序中使用Xamarin.Android
1.0.8。它在Debug
模式下工作正常,但当我切换到Release
模式时,Xamarin
中的以下行(AsseblyInfo.cs
的默认值)会关闭程序集的可调试性:
#if DEBUG
[assembly: Application(Debuggable=true)]
#else
[assembly: Application(Debuggable=false)]
#endif
因此,SQLite
的许多操作因System.Diagnostics.Debug
丢失而失败,例如此代码:
using(var db = new SQLiteConnection(path))
db.CreateTable<Cache>();
引发以下异常:
[MonoDroid] System.TypeLoadException: Could not load type 'System.Diagnostics.Debug' from assembly 'MyApp'.
[MonoDroid] at SQLite.SQLiteConnection.CreateTable (System.Type,SQLite.CreateFlags) <0x002d3>
[MonoDroid] at SQLite.SQLiteConnection.CreateTable<MyApp.Cache> (SQLite.CreateFlags) <0x0002b>
[MonoDroid] at MyApp.SQLiteCache..ctor (Android.Content.Context) <0x000c3>
[MonoDroid] at MyApp.MainActivity.OnCreate (Android.OS.Bundle) <0x0008b>
[MonoDroid] at Android.App.Activity.n_OnCreate_yApp_os_Bundle_ (intptr,intptr,intptr) <0x0005b>
[MonoDroid] at (wrapper dynamic-method) object.d0784c17-eb18-447e-beb0-3e9d001bfee1 (intptr,intptr,intptr) <0x00043>
我可以看到以下方法来处理这种情况:
#defines
添加类似sqlite-net
并向其作者提交pull requests
#defines
添加到sqlite-net
并保留给自己#define
中的AssemblyInfo.cs
并将调试代码保存在sqlite-net
处理此问题的正确方法是什么?