BinaryFormatter в netstandard 1.5

Согласно списку API-интерфейсов .NET CoreFx и их связанная версия .NET Platform Standard, System.Runtime.Serialization.Formatters добавляется в .NET Platform Standard начиная с версии 1.3, что здорово, но когда я пытаюсь создать библиотеку классов .Net Core, ориентированную на netstandard1.5 под .Net Core RC2 я не могу его использовать.

Код прост, он просто намеревается объявить BinaryFormatter:

public class Problems {
    private System.Runtime.Serialization.Formatters.Binary.BinaryFormatter _formatter;
}

Ошибка:

Ошибка CS0234 Имя типа или пространства имен «Сериализация» не существует в пространстве имен «System.Runtime» (вам не хватает ссылки на сборку?)

Вот проект.json, который я не модифицировал:

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.5.0-rc2-24027",
  },

  "frameworks": {
    "netstandard1.5": {
      "imports": "dnxcore50"
    }
  }
}

Итак, есть ли другой пакет, от которого мне нужно зависеть? И почему? Разве не должно быть достаточно имени netstandard для всех API в списке?


person Jaren Duan    schedule 26.06.2016    source источник
comment
Хм, нет, поддержка двоичной сериализации была совершенно преднамеренно.   -  person Hans Passant    schedule 26.06.2016
comment
@HansPassant Да, сначала он удаляется, однако, согласно блог .net, BinaryFormatter возвращается в .Net Core, но явно не в RC2.   -  person Jaren Duan    schedule 26.06.2016
comment
В блоге .net только что опубликована дорожная карта .Net Core, и, согласно ему, бинарная сериализация не будет доступна до 2017 года.   -  person Jaren Duan    schedule 19.07.2016


Ответы (2)


  • Пакет System.Runtime.Serialization.Formatters был добавлен после RC2, завтра он должен быть включен в релиз 1.0. А пока вы можете использовать версию из MyGet.
  • Версия 1.0 System.Runtime.Serialization.Formatters не будет содержать BinaryFormatter. В основном он содержит атрибуты и интерфейсы сериализации, а также используемые ими типы. Полный API этого пакета здесь.
  • Даже в этом случае System.Runtime.Serialization.Formatters не ссылается на NETStandard.Library. Если вы хотите использовать его, вам нужно будет явно добавить его в свой проект.json.
  • BinaryFormatter будет будет доступна в будущей версии .Net Core.
person svick    schedule 26.06.2016
comment
Спасибо! И да, BinaryFormatter не в System.Runtime.Serialization.Formatters, а на самом деле в System.Runtime.Serialization.Formatters.Binary. Я мог запутаться с двумя пространствами имен. - person Jaren Duan; 26.06.2016
comment
И почему NETStandard.Library не ссылается на System.Runtime.Serialization.Formatters? Что это на земле? - person Jaren Duan; 26.06.2016
comment
@JarenDuan NETStandard.Library ссылается только на наиболее распространенные пакеты .Net Core, а не на все из них. - person svick; 26.06.2016
comment
Да. и мы можем найти дополнительную информацию о NETStandard.Library на этой странице. Веб-сайт dotnet core docs становится все более и более полезным. И еще раз спасибо @svick. - person Jaren Duan; 27.06.2016
comment
Внимание! Страницы документации .net core, похоже, были перемещены с github.io на docs.microsoft.com после выпуска .Net Core 1.0, например, страница о пакетах — здесь сейчас - person Jaren Duan; 28.06.2016
comment
@svick, у меня есть связанный вопрос - person Andrew Savinykh; 21.02.2017

Вы не можете найти BinaryFormatter в RC2,

http://packagesearch.azurewebsites.net/

О том, будет ли это частью .NET Core, вы можете узнать из этого запроса на включение,

https://github.com/dotnet/corefx/pull/8302/files

Я предполагаю, что это будет частью .NET Core 1.0 RTM или версии 1.1.

person Lex Li    schedule 26.06.2016
comment
Спасибо, и упомянутый вами веб-сайт очень полезен для изучения пакетов .net. Жаль, что RTM может заставить его работать. - person Jaren Duan; 26.06.2016