【发布时间】:2020-08-04 17:58:23
【问题描述】:
这些是 Nuget 包 System.Memory 的依赖项。我们使用较旧的 .Net 框架版本,我注意到如果我使用 4.6.1,则对 System.Numerics.Vectors(我认为是框架 DLL)有额外的依赖关系,这在 4.5->4.6 中是不需要的。
似乎与正常情况相反,较新版本的 .Net 需要更多的依赖项。
为什么会这样,我会看到任何不同吗?在性能方面?
【问题讨论】:
这些是 Nuget 包 System.Memory 的依赖项。我们使用较旧的 .Net 框架版本,我注意到如果我使用 4.6.1,则对 System.Numerics.Vectors(我认为是框架 DLL)有额外的依赖关系,这在 4.5->4.6 中是不需要的。
似乎与正常情况相反,较新版本的 .Net 需要更多的依赖项。
为什么会这样,我会看到任何不同吗?在性能方面?
【问题讨论】:
似乎与正常情况相反,较新版本的 .Net 需要更多依赖项。
System.Memory 包包含以下目标框架的库。
在 .NET Framework 4.5 项目中使用包时,会使用 .NET Standard 1.1 目标中的System.Memory.dll,因为这是它可以使用的最高版本,请参阅此@ 987654321@。但是,此版本不使用Vector<T> 或其他向量类型。因此,它不依赖于System.Numerics.Vectors。
与 .NET Framework 4.5 相同,因为 .NET Standard 1.3 是 .NET Framework 4.6 项目可以使用的最高版本。由于只提供了一个 .NET Standard 1.1 版本,它将回退到那个版本。
在 .NET Framework 4.6.1 项目中使用包时,使用对应版本的System.Memory.dll。此版本使用 Vector<T> 类型,仅适用于:
System.Numerics.Vectors NuGet 包.NET Framework 4.6.1 目标依赖于 System.Numerics.Vectors 包,否则它将不可用。
[...] 我会看到任何不同吗?在性能方面?
可能会有性能优势,因为Vector<T> 是SIMD-accelerated type。它用于 spans 的辅助类中,其中检查了Vector.IsHardwareAccelerated,所以我想使用Vector<T> 背后有一个与性能相关的原因。
如果该包可以使用 .NET Standard,为什么还要有一个单独的 .NET Framework 4.6.1 目标?这在链接参考本身中得到了最好的解释。
[...] 虽然 NuGet 认为 .NET Framework 4.6.1 支持 .NET Standard 1.5 到 2.0,但使用为 .NET Framework 4.6.1 项目中的这些版本构建的 .NET Standard 库存在几个问题. [...]
【讨论】: