2016-05-25 2 views
0

Я пытаюсь сделать 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.

У вас есть информация по этому вопросу?

ответ

0

Это npgsql пакет, кажется, в зависимости от пакетов предварительной версии (RC - релиз-кандидат). Запустите установку с опцией -pre:

Install-Package npgsql -pre 

Это работало, по крайней мере, при установке в проект iOS. Не уверен, что он работает правильно, так как ни одна из зависимостей не добавлена ​​в ссылки, а только Npgsql.

+0

Я проверил флажок «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? ' –

+0

Примечание: отправлен вопрос о вышеупомянутой проблеме: http://stackoverflow.com/questions/37484894/consuming-netstandard13-packages-from-xamarin-projects –

+0

Это выглядит как ошибка в пакете. Если вы посмотрите на папку «пакеты», созданная NuGet, вы найдете там эти библиотеки. Папки для Android и iOS пустые. Почему в iOS это не может быть несколько причин, но я подозреваю, что это связано с директивой компилятора. Вместо того, чтобы устанавливать его из NuGet, лучшим вариантом будет работа с исходным кодом, поскольку пакеты явно не готовы. – SKall

0

Я считаю, что ваши спекуляции верны для инструментов Xamarin, которые не являются полностью netstandard/PCL5 осведомлены AFAIK (Ваши спекуляции так же хороши, как и мои). Это огромные усилия всех объединенных сторон, которые должны быть объединены. На конце dotnet произошли значительные изменения, которые могут изменить это.

Для вопросов о System.Data:

System.Data отсутствует немного функциональности: https://developer.xamarin.com/guides/ios/advanced_topics/system.data/#Missing_Functionality

System.Data доступен через Xamarin.iOS.dll сборки, как это не поддерживается в ИХЛЕ.

https://developer.xamarin.com/guides/ios/under_the_hood/assemblies/

https://msdn.microsoft.com/en-us/library/system.data(v=vs.110).aspx (Заметьте, не PCL элементов внутри)

Наконец, должно быть в блоге на следующей неделе о netstandard через https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-to-project-json/

Я настоятельно рекомендую вам присоединиться ядро ​​.NET чтобы задать любые вопросы, которые могут возникнуть у вас.

http://tattoocoder.com/aspnet-slack-sign-up/

Смежные вопросы