Microsoft.Bcl.Immutable与System.Collections.Immutable.Net40

Dan*_*n P 3 .net asp.net-4.0 nuget

这两个NuGet包有什么区别?如果我正在创建一个.net 4.51项目,我应该使用一个吗?我过去曾使用过Microsoft.Bcl.Immutable的测试版,但只是好奇一个人是否会比另一个更好或者使用一个优于另一个的利弊.

Sam*_*ell 5

Microsoft正式维护System.Collections.Immutable程序集的一个版本,它以.NET 4.5及更新版本为目标(作为可移植类库).该库的第一个(也是当前最新的)稳定版本是1.0版本,它作为Microsoft.Bcl.Immutable NuGet包发布.这个开源库的持续开发是GitHub上.NET Core项目的一部分,1.1版的beta版本出现在System.Collections.Immutable包中.

如果您需要定位旧版本的.NET,则目前有两个选项.

  • System.Collections.Immutable.Net40:这是1.0版本到.NET 4.0的后端口.它不包括强名称程序集,我不确定它的持续状态.
  • Rackspace.Collections.Immutable:这是当前1.1 beta版本的多目标后端,目前正在回溯到.NET 3.5.程序集包含强名称,并且该[TypeForwardedTo]属性适用于发布更新的目标是插入式替换.例如,.NET 4.5的构建版本为11KB,并将所有内容转发给System.Collections.Immutable程序集; 如果您在.NET 4.5环境中引用了Rackspace.Collections.Immutable的代码,则可以包含此存根,并且在运行时,.NET 3.5或4.0代码将表现为它是针对4.5版本构建的.

  • 一段时间过去了,我假设现在应该使用[System.Collections.Immutable](https://www.nuget.org/packages/System.Collections.Immutable/)包.[Microsoft.Bcl.Immutable](https://www.nuget.org/packages/Microsoft.Bcl.Immutable/)似乎已经消失,或者现在可能用于测试版? (2认同)