我已经使用nuget包管理器下载this package
示例显示:
select class_id, class_name, count(student_id)
from classes c
join students s using(class_id)
group by 1, 2
order by 1
我面临的问题是我无法引用SQLitePlatformIOS。
我甚至在source code中找到了它,但我无法访问public class SQLiteFactoryiOS : ISQLiteFactory
{
public SQLite.Net.SQLiteConnection CreateConnection(string dbName)
{
var path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), dbName);
return new SQLite.Net.SQLiteConnection(new SQLitePlatformIOS(), path);
}
}
命名空间,因此我无法创建.Platform
对象。
SQLitePlatformIOS
我用来引用它的项目是一个可移植的类项目,因为在references文件夹中我看到了.NET Portable Subset。
项目的结构是
iOS MainProject引用示例便携式项目 示例可移植项目引用SQLite.Net-PCL
在便携式项目中我有
using SQLite.Net; //.Platform.XamarinIOS <-- Compiler error if I try to reach this
我的示例存储库是
References
.NET Portable Subset
From Packages
SQLite.Net
Packages
SQLite.Net-PCL
Data
Repositories
ExampleRepository.cs
我从iOS项目中调用此类。
using System;
using Example.Data.DTO;
using Example.Models.Properties;
using SQLite.Net;
namespace Example.Data.Repositories
{
public class ExampleRepository(string dbPath)
{
using (var db = new SQLite.Net.SQLiteConnection(new SQLitePlatformIOS() /* Can't reference */, dbPath))
{
db.CreateTable<ExampleDTO>();
}
}
}
答案 0 :(得分:7)
您未找到iOS实施参考的原因是您无法访问PCL中的平台特定代码。事实上,你并不需要它。 PCL内部所需的只是接口,特定代码将使用DI框架注入,因此PCL为每个平台使用正确的代码,而无需检查您在运行时使用的平台。
Here你可以看到一个关于依赖注入如何工作的例子(它甚至使用SQLite)
答案 1 :(得分:2)
是的,.Platform命名空间已从SQLite.Net PCL包中消失。
解决方法是从https://github.com/oysteinkrog/SQLite.Net-PCL下载源代码,然后自己构建二进制文件。要执行此操作,请在Xamarin Studio中打开解决方案(截至输入此内容我在5.10.3 Build 51上),将模式更改为Release(不针对任何特定硬件),然后单击Build -> Build All
。
然后在Xamarin Studio中打开您的iOS项目,右键单击References文件夹并选择Edit References...
,然后单击.Net Assembly
选项卡,单击Browse...
并浏览到的位置您刚刚构建的SQLite.Net.Platform.XamarinIOS.Unified.dll文件。它应该在SQLite.Net-PCL-master/SQLite.Net.Platform.XamarinIOS.Unified/bin/Release
虽然是2014年的一篇旧文章,但我从https://forums.xamarin.com/discussion/28916/error-while-trying-to-install-sqlite-net-platform-xamarinios-2-4-1-please-help找到了SQLite.Net PCL GitHub链接(参见JuhaPehkonen 2014年12月发布的帖子)
有关在Xamarin Studio中添加引用的更多信息,请访问:How to add libraries to Xamarin References lists