热门标签 | 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;


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了如何使用Spring Boot进行高效开发,涵盖了配置、实例化容器以及核心注解的使用方法。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 本文总结了在使用Ionic 5进行Android平台APK打包时遇到的问题,特别是针对QRScanner插件的改造。通过详细分析和提供具体的解决方法,帮助开发者顺利打包并优化应用性能。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文探讨了 Objective-C 中的一些重要语法特性,包括 goto 语句、块(block)的使用、访问修饰符以及属性管理等。通过实例代码和详细解释,帮助开发者更好地理解和应用这些特性。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • andr ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
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社区 版权所有