gpt4 book ai didi

c# - 找不到类型或命名空间名称 'IPAddress'

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:43 25 4
gpt4 key购买 nike

我正在编写一个 Xamarin.Forms 应用程序,并将一个 PCL 项目添加到我在 Visual Studio 2013 中的主要解决方案中。我在使用多个标准 .net 类时遇到问题。这是一个列表:

System.Net.IPAddress
System.Net.IPEndPoint
System.Net.WebClient
System.Net.Sockets.UdpClient
System.Timers.Timer
System.Timers.ElapsedEventArgs
System.Net.NetworkInformation.UnicastIPAddressInformation

我的问题是:如何确定以上哪些与 Xamarin.Forms 应用程序兼容,以及如何让它们在我的项目/解决方案中工作?

我已经联系了 Xamarin 支持,但得到的帮助含糊不清,而不是具体...

是否有人有好的策略来确定支持哪些类以及需要哪些 .dll 以便将它们用于 Xamarin.Forms 项目?

非常感谢您的帮助。

PS:我得到了以下网站供引用,但他们似乎没有任何简明信息:

What is supported

NuGet package info

最佳答案

听起来您并不了解可移植类库的实际含义。创建 PCL 时,可供您使用的 .Net Framework 类的子集取决于您选择的配置文件。配置文件是您的 PCL 可以支持的平台。在 Xamarin 中,默认配置文件是 Profile 78。Profile 78 支持 .NET 4.5、WP8、Win8、WP Silverlight 8、Win Store 8、Xamarin.Android、Xamarin.iOS。因此,您可以使用的类是独立于平台的类,它们在配置文件 78 中的所有平台上运行。

示例:看一下 System.Net.IPAddress 的实现.该实现使用了 Sockets .进一步检查此实现后,您会发现 System.Net.Sockets 只不过是围绕 WinSock API 的 .NET 包装器。 . WinSock API 是 Windows 专用的 DLL,特定于 Windows 操作系统系列 (ws2_32.dll)。因此,您现在可以看到 System.Net.IPAddress 是 Windows Socks(为 Windows 平台构建)的高级抽象。由于 ws2_32.dll 在 Android 和 iOS 等中不存在,您将无法使用此 API,因为 Profile 78 指定我们需要支持其他非 Windows 平台。

另一个例子是 System.Drawing.Bitmap。这只是 GDI+ 的 .NET 包装器,它基于 Win32 API。当然,Win32 在非 Windows 平台(甚至是 Windows Phone)上不可用,这就是为什么您不会在 PCL 中看到它的原因。

话虽如此,您可能认为 PCL 是有限制的,但如果您认为可以创建一个好的 PCL 库 about them the right way .您还可以使用依赖注入(inject)和 Bait and Switch 等模式.

因此,简而言之,不要指望微软“添加对所有基类库的支持”,因为那不是 PCL。

关于c# - 找不到类型或命名空间名称 'IPAddress',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28726908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com