Переносимая библиотека классов и .NET ConcurrentDictionary

Глядя на http://msdn.microsoft.com/en-us/library/dd287191(v=vs.110).aspx, кажется, что ConcurrentDictionary и все его друзья в пространстве имен System.Collections.Concurrent доступны для использования в переносимой библиотеке классов.

Однако, когда я создаю переносимую библиотеку классов F # или C #, даже если я явно добавляю ссылку на mscorlib.dll, компиляция завершается ошибкой при использовании ConcurrentDictionary.

Почему?


person Okay    schedule 30.08.2012    source источник
comment
Код? Ошибка компиляции?   -  person vcsjones    schedule 30.08.2012
comment
Насколько я понимаю, этот класс недоступен в .NET 4 Portable Class Library, msdn.microsoft.com/en-us/library/dd287191 (v = vs.100) .aspx. Может быть, вы ориентируетесь на .NET 4 вместо 4.5?   -  person Anders Gustafsson    schedule 30.08.2012
comment
@AndersGustafsson: при создании переносимой библиотеки классов F # у вас нет другого выбора, кроме таргетинга на .NET 4.5.   -  person Okay    schedule 30.08.2012
comment
Есть какие-нибудь сведения о том, будут ли они доступны в Windows Phone 9?   -  person William Jockusch    schedule 10.12.2013


Ответы (1)


Термин «портативный» сейчас следует применять в широком смысле. Когда вы создаете проект библиотеки классов, вам будет предложено указать цели, которые вы хотите поддерживать. Вы получите ConcurrentDictionary, только если выберете «.NET Framework» и «.NET для приложений Магазина Windows».

Выберите любой другой, и все пространство имен исчезнет.

Я полагаю, со временем это станет лучше, но Windows Phone 7, XBox и Silverlight сейчас отстают.

person Hans Passant    schedule 30.08.2012
comment
Вы были правы, но я получаю подсказку только с проектами C #. Деактивировав все, кроме двух, о которых вы мне сказали, я мог использовать это пространство имен :). Однако шаблон проекта F # Portable Class Library не предлагает мне эти параметры :(. - person Okay; 30.08.2012
comment
Я повторяю это. F # дополнительно ограничен (нет XBox или Phone) и имеет фиксированное подмножество. Которая включает Silverlight, так что это недопустимо. - person Hans Passant; 30.08.2012
comment
Да, к сожалению, F # поддерживает только фиксированное подмножество платформ через переносимость; Silverlight 5, .NET Framework 4.5 и приложения из Магазина Windows. - person David Kean; 13.09.2012
comment
Может быть, это поможет вам: nuget.org/packages/Portable.ConcurrentDictionary - person Stef Heyenrath; 12.11.2016