Как ссылаться на System.Net.Sockets.Socket в PCL

Я разрабатываю приложение для Android, Ios и UWP. Поскольку мне нужно подключение к сокету, я использовал DependenyService для доступа к коду, специфичному для платформы, и начал реализовывать свой интерфейс во всех трех проектах.

Проблема в том, что реализация во всех трех проектах одинакова, потому что все они используют System.Net.Sockets.Socket. Однако я не могу просто поместить код реализации в свой PCL и использовать его для всех трех, потому что я не могу ссылаться на System.Net.Sockets.Socket в своем PCL. (туда не выходит)

На этом рисунке показан раздел таргетинга моего PCL

Я думаю, проблема в том, что мой PCL нацелен на ASP.NET Core 1.0, который не содержит API для System.Net.Sockets.Socket. Однако я не могу сказать своему PCL остановить целевой ASP.NET Core 1.0, потому что он автоматически становится целевым.

Итак, кто-нибудь знает, как я могу обмениваться кодом только между Android, iOS и UWP или сделать свой PCL нацеленным только на них?


person Dominik Salchner    schedule 27.09.2016    source источник


Ответы (1)


Если приложение должно поддерживать только iOS, Android и UWP, вы можете переключиться на PCL 2016 года и будущее, называемое стандартом .NET (>= 1.3).

В свойствах вашего PCL нажмите Target .NET Platform Standard и выберите 1.3 или выше. Если у вас нет этой опции, вам нужно установить/обновить некоторые вещи. Требования перечислены здесь: https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/libraries

введите здесь описание изображения

После того, как вы это сделаете, вы готовы использовать сокеты без использования таких шаблонов, как фабрика или внедрение зависимостей (которые являются альтернативами).


Или вы используете подключаемый модуль Sockets: https://www.nuget.org/packages/rda.SocketsForPCL

person Sven-Michael Stübe    schedule 27.09.2016
comment
большое спасибо! Мне потребовалось некоторое время, но теперь он работает со стандартом .net. - person Dominik Salchner; 28.09.2016