Я пытаюсь сделать Npgsql, поставщик PostgreSQL для .NET, доступным для потребления пользователями Xamarin. Я изучил различные методы для этого и, кажется, заблокирован.Использование пакетов от проектов Xamarin
Во-первых, проект Xamarin может потреблять пакеты, предназначенные для определенных профилей PCL. Проблема в том, что ни один из этих профилей PCL не содержит System.Data, который требуется Npgsql, хотя Xamarin itself allows you to use System.Data.
Во-вторых, Npgsql уже поддерживает стандарт платформы .NET (версия 3), и the documentation on the standard содержит следующее предложение:
Если библиотека целей .NET Platform Standard версии 1.3, он может работать только на .NET Framework 4.6 или новее, платформы .NET Core, Universal Windows Platform 10 (UWP) и платформы Mono/Xamarin.
Однако попытка спуститься по этому пути привела к нескольким ошибкам (this question is one of them). Я предполагаю, что инструментарий Xamarin еще не полностью известен.
Наконец, представляется возможным импортировать Npgsql в качестве общего проекта внутри пользовательского решения, но это кажется очень взломанным и неправильным решением - оно полностью обходит NuGet.
У вас есть информация по этому вопросу?
Я проверил флажок «preerelease» в графическом интерфейсе VS NuGet, но, видимо, это не совсем то же самое ... «Install-Package -Pre' работал.Однако после того, как Npgsql был установлен, попытка фактически скомпилировать проект завершилась неудачей с помощью 'System.IO.FileNotFoundException: Не удалось загрузить сборку. System.Security.Cryptography.Algorithms, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a ' , Возможно, этого не существует в профиле Mono для Android? ' –
Примечание: отправлен вопрос о вышеупомянутой проблеме: http://stackoverflow.com/questions/37484894/consuming-netstandard13-packages-from-xamarin-projects –
Это выглядит как ошибка в пакете. Если вы посмотрите на папку «пакеты», созданная NuGet, вы найдете там эти библиотеки. Папки для Android и iOS пустые. Почему в iOS это не может быть несколько причин, но я подозреваю, что это связано с директивой компилятора. Вместо того, чтобы устанавливать его из NuGet, лучшим вариантом будет работа с исходным кодом, поскольку пакеты явно не готовы. – SKall