可移植类库和.NET ConcurrentDictionary

10

查看http://msdn.microsoft.com/en-us/library/dd287191(v=vs.110).aspx,似乎ConcurrentDictionary以及位于System.Collections.Concurrent命名空间中的其他类型都可用于可移植类库。

但是,当我创建F#或C#可移植类库时,即使明确添加对mscorlib.dll的引用,使用ConcurrentDictionary时编译仍会失败。

为什么?


代码?编译错误? - vcsjones
据我所见,这个类在 .NET 4 可移植类库中不可用,http://msdn.microsoft.com/en-us/library/dd287191(v=vs.100).aspx。难道你的目标是 .NET 4 而不是 4.5 吗? - Anders Gustafsson
1
@AndersGustafsson:当您创建一个F#可移植类库时,您别无选择,只能针对**.NET 4.5**进行目标设置。 - Okay
这些功能是否会在Windows Phone 9中提供? - William Jockusch
1个回答

10

目前,“便携式”这个术语的应用范围应该是相对宽泛的。在创建类库项目时,会提示您选择要支持的目标平台。只有在选择“.NET Framework”和“.NET for Windows Store应用程序”时,您才能获得ConcurrentDictionary。

如果选择其他任何平台,整个命名空间都会消失。

我认为随着时间的推移,情况会变得更好,但现在Windows Phone 7、XBox和Silverlight仍然滞后。


1
你是对的,但我只在 C# 项目 中看到了提示。通过停用除了你告诉我的那两个之外的所有选项,我可以使用这个命名空间 :).然而,F# 可移植类库 项目模板并没有提示我这些选项 :(。 - Okay
2
我复现了。F#受到进一步的限制(没有XBox或Phone),并且有一个固定的子集。其中包括Silverlight,所以那里行不通。 - Hans Passant
2
是的,不幸的是,F#只通过可移植性支持一组固定的平台;Silverlight 5、.NET Framework 4.5和Windows Store应用程序。 - David Kean
1
也许这个可以帮到你:https://www.nuget.org/packages/Portable.ConcurrentDictionary - Stef Heyenrath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接