热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Xamarin开发笔记:.NETStandard2.0库兼容性探讨

本文探讨了在Xamarin表单中使用.NETStandard2.0库时遇到的兼容性问题及解决方案。

前言:本文旨在帮助开发者解决在 Xamarin 表单中使用 .NET Standard 2.0 库时遇到的兼容性问题,提供实用的建议和解决方法。


我在尝试将几个 NuGet 包集成到我的 Xamarin 表单项目中时遇到了一些问题,这些包包括 ExifLib.PCL 1.0.1、Microsoft.Bcl 1.1.6 等。虽然这些包已被恢复,但它们使用的是 .NET Framework 4.6.1 而不是项目的 .NET Standard 2.0 目标框架。系统提示这些包可能与项目不完全兼容。这是否意味着我不能再使用这些库?


答案


这并不意味着您无法使用这些库。实际上,大多数遵循 PCL 规范的库都可以在 .NET Standard 2.0 类库中正常工作。不过,确实存在一些潜在的兼容性问题,尤其是在 API 调用方面。建议查阅官方 .NET 文档,了解不同平台对 .NET Standard 的支持情况及其对应的 PCL 配置文件。


关于警告信息的解释

在使用 .NET Standard 2.0 和 .NET Core SDK 2+ 版本时,.NET 团队希望通过更新工具使更新或使用 .NET 标准库变得更加容易。然而,并非所有 NuGet 包都已经更新以支持新的 .NET Standard 版本。为了解决这一问题,.NET 团队引入了 .NET Framework 4.6.1 作为回退目标,因为它与 .NET Standard 2.0 几乎完全兼容(尽管 .NET Standard 2.0 中的一些 API 在 .NET Framework 4.6.1 中不可用,但可以通过 NuGet 包引入)。因此,您看到的警告是为了提醒您,某些包可能包含不适用于 .NET Standard 2.0 运行时的 API。

如果经过测试确认一切功能正常,可以在 csproj 文件中的 PackageReference 标签内添加 NoWarn="NU1701" 来抑制这些警告。需要注意的是,此设置仅对单个包有效,对于该包的依赖项则无效。若要彻底消除所有相关警告,需将这些依赖项也加入 PackageReferences 中,或者在项目级别忽略 NU1701 警告。

如果遇到回退问题,可以通过在 csproj 文件中修改 AssetTargetFallback 属性来调整回退目标框架,例如:

$(AssetTargetFallback);portable-net45+win8+wpa81;


推荐阅读
  • ServiceStack与Swagger的无缝集成指南
    本文详细介绍了如何在ServiceStack项目中集成Swagger,以实现API文档的自动生成和在线测试。通过本指南,您将了解从配置到部署的完整流程,并掌握如何优化API接口的开发和维护。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 本文详细介绍了如何使用Spring Boot进行高效开发,涵盖了配置、实例化容器以及核心注解的使用方法。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • 本文介绍了如何利用npm脚本和concurrently工具,实现本地开发环境中多个监听服务的同时启动,包括HTTP服务、自动刷新、Sass和ES6支持。 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
author-avatar
jasonmysh
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有