C# SQLite Xamarin.在Android上形成PCL错误
我正试图在pcl项目中的xamarin(C#)上构建一个sqlite数据库。我正在学习教程。在Android实现(步骤5)中,我得到以下错误: 错误CS0104“Environment”是“Android.OS.Environment”和“System.Environment”AlarmSQLite.Android c:\users\thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite\U Android.cs 30 Active 错误CS0234命名空间“SQLite”(是否缺少程序集引用?)AlarmSQLite中不存在类型或命名空间名称“Net”。Android c:\users\thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite\U Android.cs 33处于活动状态 我使用VisualStudio2017。我试图删除.Net并添加System.Environment,但出现了更多新错误。 我的代码:C# SQLite Xamarin.在Android上形成PCL错误,c#,android,sqlite,xamarin,cross-platform,C#,Android,Sqlite,Xamarin,Cross Platform,我正试图在pcl项目中的xamarin(C#)上构建一个sqlite数据库。我正在学习教程。在Android实现(步骤5)中,我得到以下错误: 错误CS0104“Environment”是“Android.OS.Environment”和“System.Environment”AlarmSQLite.Android c:\users\thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite\U Android.c
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using SQLite;
using Xamarin.Forms;
using AlarmSQLite.Droid;
using System.IO;
[assembly: Dependency(typeof(SQLite_Android))]
namespace AlarmSQLite.Droid
{
public class SQLite_Android : ISQLite
{
public SQLite_Android() { }
public SQLite.SQLiteConnection GetConnection()
{
var dbName = "AlarmDB.db3";
var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var path = Path.Combine(documentsPath, dbName);
var platform = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
var connection = new SQLite.Net.SQLiteConnection(platform, path);
return connection;
}
}
}
教程中的所有内容都是一样的。我做错了什么?谢谢大家!
新错误:
错误CS0234命名空间“SQLite”(是否缺少程序集引用?)AlarmSQLite中不存在类型或命名空间名称“Platform”。Android C:\Users\Thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite\U Android.cs 33处于活动状态
错误CS0029无法将类型“SQLite.Net.SQLiteConnection”隐式转换为“SQLite.SQLiteConnection”AlarmSQLite.Android C:\Users\Thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite\u Android.cs 36 Active错误CS0104: 环境源于“Android.OS.Environment”和“System.Environment”,所以会给您带来一些不确定性问题。只需将系统预先安装到环境中即可
var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
错误CS0234:似乎您尚未添加Nuget软件包。您必须将其添加到PCL以及Android项目中,然后再次构建项目
错误CS0234&CS0029:请确保在android和pcl项目中添加了以下两个nuget软件包
然后,不要使用Sqlite,而是尝试使用Sqlite.Net 您的最终代码应该如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Xamarin.Forms;
using AlarmSQLite.Droid;
using System.IO;
using SQLite.Net;
using SQLite.Net.Async;
[assembly: Dependency(typeof(SQLite_Android))]
namespace AlarmSQLite.Droid
{
public class SQLite_Android : ISQLite
{
public SQLite_Android() { }
public SQLiteConnection GetConnection()
{
var dbName = "AlarmDB.db3";
var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var path = Path.Combine(documentsPath, dbName);
var platform = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
var connection = new SQLiteConnection(platform, path);
return connection;
}
}
}
别忘了调整你的界面。应该是这样的:
SQLiteConnection GetConnection():
注意:如果不需要Sqlite.Net.Async PCL引用,可以省略它。错误已解决,但我得到了新的错误。平台(与.Net错误相同),并且在返回连接时,方法必须是.Net。但是当我这样做的时候,我的界面出现了问题,使得connectionI在你的帖子中只能看到两个错误。请提及这些新错误。我更新了我的答案。您使用的是“SQLite”引用而不是“SQLite.Net”。