首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么System.Memory在.Net 4.6.1中依赖于System.Numerics.Vectors,而在.Net 4.6中却不依赖?

为什么System.Memory在.Net 4.6.1中依赖于System.Numerics.Vectors,而在.Net 4.6中却不依赖?
EN

Stack Overflow用户
提问于 2020-08-04 17:58:23
回答 1查看 1.8K关注 0票数 2

这些是Nuget包System.Memory的依赖项。我们使用较早的.Net框架版本,我注意到,如果使用4.6.1,就会有对System.Numerics.Vectors (我认为是一个框架DLL )的附加依赖,而在4.5-4.6以上的版本中并不需要这种依赖。

与正常情况相反的是,更新版本的.Net需要更多的依赖项。

这是为什么,我会看到任何不同的表现吗?

EN

回答 1

Stack Overflow用户

发布于 2020-08-05 09:25:53

与正常情况相反的是,更新版本的.Net需要更多的依赖项。

System.Memory包包含以下目标框架的库。

  • .NET框架4.6.1
  • .NET标准2.1
  • .NET标准2.0
  • .NET标准1.1

.NET框架4.5

在使用.NET Framework4.5项目中的包时,将使用来自.NET标准1.1目标的System.Memory.dll,因为这是它可以使用的最高版本,请参见此参考文献。但是,此版本不使用Vector<T>或其他向量类型。因此,它不依赖于System.Numerics.Vectors

.NET框架4.6

与.NET Framework4.5相同,因为.NET标准1.3是.NET Framework4.6项目可以使用的最高版本。由于只提供了一个.NET标准1.1版本,所以它将回到这个版本。

.NET框架4.6.1

在使用.NET Framework4.6.1项目中的包时,将使用相应版本的System.Memory.dll。此版本使用的Vector类型仅适用于:

  • .NET Core >= 1.0
  • .NET标准>= 2.1预览
  • System.Numerics.Vectors NuGet包

.NET Framework4.6.1目标依赖于System.Numerics.Vectors包,因为否则它将不可用。

..。我会看到任何不同的表现吗?

由于Vector<T>是一个SIMD-加速型,因此可能会带来性能上的好处。它用于帮助器类中的spans,其中检查了Vector.IsHardwareAccelerated,因此我猜使用Vector<T>有一个与性能相关的原因。

奖金回合

如果可以使用.NET标准,那么为什么这个包甚至有一个单独的.NET框架4.6.1目标呢?这最好在链接引用本身中解释。

..。虽然NuGet认为.NET Framework4.6.1支持.NET标准1.5到2.0,但在使用.NET标准库时存在一些问题,这些库是为从.NET Framework4.6.1项目构建的版本构建的。..。

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

https://stackoverflow.com/questions/63252607

复制
相关文章

相似问题

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