如何在 PCL 中引用 System.Net.Sockets.Socket

How to reference System.Net.Sockets.Socket in PCL

我一直在为 Android、Ios 和 UWP 开发应用程序。 由于我需要套接字连接,所以我使用 DependenyService 访问 "platform specific" 代码并开始在所有 3 个项目中实现我的接口。

问题是所有 3 个项目的实现完全相同,因为它们都使用 System.Net.Sockets.Socket。 但是我不能简单地将实现代码放在我的 PCL 中并将其用于所有 3 个,因为我无法在我的 PCL 中引用 System.Net.Sockets.Socket。 (不在那里退出)

This picture shows the targeting section of my PCL

我认为问题是我的 PCL 目标是 ASP.NET Core 1.0,它不包含 System.Net.Sockets.Socket 的 API。 但是,我无法让 PCL 停止目标 ASP.NET Core 1.0,因为它会自动成为目标。

所以有没有人知道我如何才能只在 Android、Ios 和 UWP 之间共享代码,或者让我的 PCL 只针对它们?

如果应用只支持iOS、Android和UWP,你可以切换到2016年的PCL和以后的.NET标准(>=1.3 ).

在 PCL 的属性中单击 Target .NET Platform Standard 和 select 1.3 或更高版本。如果您没有此选项,则必须 install/update 一些东西。要求列于此处:https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/libraries

完成后,您就可以使用套接字了,而无需使用工厂或依赖注入(它们是替代方案)等模式。


或者您使用 Sockets 插件:https://www.nuget.org/packages/rda.SocketsForPCL