VS 2017 的 Xamarin.Android 中的 System.Memory 支持

Posted

技术标签:

【中文标题】VS 2017 的 Xamarin.Android 中的 System.Memory 支持【英文标题】:System.Memory support in Xamarin.Android for VS 2017 【发布时间】:2020-12-28 14:35:40 【问题描述】:

在 Xamarin 应用程序中,我使用了引用 system.collection.Immutable 的第三方库。在 VS 2019 中构建适用于 android 的应用程序时没有遇到任何问题。

当我尝试在 VS 2017 中构建应用程序时,它显示以下构建错误

Error XA2002: Can not resolve reference: `System.Memory`, referenced by `System.Collections.Immutable`. Please add a NuGet package or assembly reference for `System.Memory`, or remove the reference to `System.Collections.Immutable`.

添加对 System.Memory 的引用后,错误得到解决。

请让我知道这背后的实际原因,因为目标 android 版本(Android 9.0 pie)对于 VS 2017 和 VS 2019 是相同的

【问题讨论】:

使用 packages.config 而不是 PackageReference Include,我在 System.Threading.Tasks.Extensions 上遇到过类似问题,这也会导致 PackageReference Include 出现有线错误b> 并切换回 packages.config 修复它。 【参考方案1】:

我认为问题的出现是因为 Visual Studio 2017 和 Visual Studio 2019 中的 Xamarin SDK 版本与 System.Memory NuGet 包版本存在棘手的兼容性关系。在 Visual Studio 2019 中,Xamarin.Android 和 Xamarin.ios 使用该 NuGet 包中它们自己的内置类型实现,因此它们不需要引用 NuGet 包中的程序集。 System.Memory NuGet 包相应地包含 Xamarin 项目类型的占位符文件以防止冲突。

但内置实现尚未覆盖 NuGet 包的全部表面区域。因此对于 Visual Studio 2017,Mono 团队暂时隐藏了这些内置实现(通过将它们切换到内部并移除 System.Memory 外观程序集)。这意味着 Xamarin 项目现在依赖于 NuGet 包中的实现。

【讨论】:

谢谢 Leo,有没有微软的参考资料。 @Manishkumar 很抱歉,我暂时没有找到关于此的解释。

以上是关于VS 2017 的 Xamarin.Android 中的 System.Memory 支持的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Android Nunit测试在测试资源管理器中可被发现,但在运行测试时未被发现。 (VS2017)

vs2015 Xamarin.Android安装

Xamarin.Android 入门之:Xamarin+vs2015 环境搭建

Xamarin.Android 入门之:Xamarin+vs2015 环境搭建

VS/Xamarin Android开发Follow Me

VS2015中无法启动Xamarin Android调试怎么办