Xamarin开发中MediaRouter与Palette不兼容NetStandard2.1如何解决?
核心原因
Xamarin.AndroidX 系列包属于 Android 平台专属依赖,仅支持 Xamarin.Android 项目,直接在 NetStandard 共享库或者 iOS 项目中引用就会触发兼容报错。
具体解决方案
- 第一步:删除 NetStandard 2.1 共享项目中
Xamarin.AndroidX.MediaRouter、Xamarin.AndroidX.Palette两个包的引用,所有和这两个包相关的业务逻辑从共享库迁移到 Android 专属项目中。 - 第二步:仅在 Xamarin.Android 项目的
.csproj文件中保留两个包的引用,参考配置如下:
<PackageReference Include="Xamarin.AndroidX.MediaRouter" Version="1.2.5" /> <PackageReference Include="Xamarin.AndroidX.Palette" Version="1.0.0.8" />
- 第三步:如果共享库需要调用这两个包提供的能力,使用依赖服务机制实现:先在共享库定义公共功能接口,再在 Android 项目中基于这两个 AndroidX 包完成接口实现,iOS 项目可对应实现空逻辑或平台适配逻辑,避免跨平台调用冲突。
- 第四步:清理所有项目的
bin、obj缓存文件夹,重新完整生成解决方案即可正常运行两端项目。
内容的提问来源于stack exchange,提问作者Stephanie Nicolaou
相关产品推荐
相关产品推荐

