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

Posted

技术标签:

【中文标题】如何在 PCL 中引用 System.Net.Sockets.Socket【英文标题】:How to reference System.Net.Sockets.Socket in PCL 【发布时间】:2017-02-04 20:33:52 【问题描述】:

我一直在为 androidios 和 UWP 开发应用程序。 因为我需要一个套接字连接,所以我使用 DependenyService 来访问“特定于平台”的代码,并开始在所有 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 只针对它们?

【问题讨论】:

【参考方案1】:

如果应用只支持 iOS、Android 和 UWP,您可以切换到 2016 年和未来称为 .NET 标准 (>= 1.3) 的 PCL。

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

完成这些之后,您就可以使用 Sockets 而无需使用像工厂或依赖注入这样的模式(它们是替代方案)。


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

【讨论】:

非常感谢!我花了一些时间,但现在它适用于 .net 标准。

以上是关于如何在 PCL 中引用 System.Net.Sockets.Socket的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xamarin ios pcl 中使用 protobuf-net

[软件工具][原创]pcl引用库一键配置到VisualStudio中支持vs2015-v2022使用教程

在 PCL 服务参考设置中禁用基于任务的异步操作

如何在 Xamarin 表单跨平台中添加服务引用?

如何指定引用的多目标项目的平台?

pcl总结