首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么添加System.Memory引用会破坏我的iOS项目?

为什么添加System.Memory引用会破坏我的iOS项目?
EN

Stack Overflow用户
提问于 2022-01-03 18:38:08
回答 1查看 189关注 0票数 2

摘要

我有两个项目的解决方案:一个.NET标准和一个引用.NET标准项目的iOS项目。

如果.NET标准没有引用System.Memory nuget包(特别是4.5.3或4.5.4版本),那么一切都正常。如果我在System.Memory标准项目中添加了对.NET的引用,那么我的iOS项目就会使用MissingMethodException崩溃。

注意:这个问题仅限于iOS,它不会在Xamarin上复制。

我该如何解决这个问题?

详细信息

我的项目是使用TopTen.RichTextKit库( https://www.nuget.org/packages/Topten.RichTextKit/ )来执行文本块度量。当我在iOS上运行代码时,在调用TextBlock.MeasuredHeight时会出现以下崩溃:

代码语言:javascript
复制
System.InvalidOperationException: 'Exception in BuildFontRuns() with original length of 11 now 11, style run count 1, font run count 0, direction overrides: False'

这有一个内在的例外:

代码语言:javascript
复制
Method not found: void SkiaSharp.SKFont.GetGlyphs(System.ReadOnlySpan`1<int>,System.Span`1<uint16>)

通过逐个删除nuget包并使用测试项目,我发现如果在我的System.Memory标准项目中引用.NET版本4.5.4,就会发生错误。如果我删除这个版本,崩溃就会消失。

此外,不同版本的System.Memory会导致不同的行为:

crashes

  • 4.5.4

  • 4.5.0- works

  • 4.5.1 -不会编译

  • 4.5.2-不会编译

  • 4.5.3-

F 214

不幸的是,我不能降级为System.Memory 4.5.0,因为其他库需要>= 4.5.4版本。

我不完全理解这些解释,但我发现了一些链接,表明System.Memory的System.Memory实现还没有完成。例如:

--这意味着Xamarin项目现在依赖于来自NuGet包的实现。因此,System.Memory NuGet包版本4.5.1不包括Xamarin项目类型的占位符文件。

"Can not resolve reference: System.Memory" or "Could not find System.Memory" after update to Visual Studio 2017 version 15.8 Preview

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-03 18:38:08

我找到了一个解决办法--通过在我的System.Memory项目中引用iOS版本4.5.0 (特别是这个版本),我的项目运行。我可以继续在我的System.Memory标准项目中引用.NET 4.5.4,所以只需要在iOS项目中进行更改。

请注意,这意味着我的解决方案是引用混合版本的System.Memory,我认为这是不推荐的。然而,在这种情况下,这是我能找到的唯一解决这个问题的办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70570062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档