2017-02-09 11 views
1

У меня есть обычная библиотека классов с функцией, которая преобразует байт-массив в изображение.Портативная библиотека классов - Ссылка на тип «MarshalByRefObject» утверждает, что она определена в «mscorlib», но ее не удалось найти

Теперь я удалил, что библиотеки классов и создал портативные библиотеки классов с тем же именем, и теперь код не работать больше и дает мне ошибку на «FromStream» -функции:

Ссылка на тип претензии «MarshalByRefObject» оно определено в «mscorlib», но она не может быть найдено

using System; 
using System.Drawing; 
using System.IO; 

namespace App.Converters 
{ 
    public static class Converter 
    { 
     public static Image ToImage(this byte[] byteArray) 
     { 
      try 
      { 
       return Image.FromStream(new MemoryStream(byteArray)); 
      } 
      catch 
      { 
       throw new FormatException("Data is not an image"); 
      } 
     } 
    } 
} 

Мой проект ориентирован:

  • .NET Framework 4.5
  • ASP.NET Ядро 1,0
  • Windows 8
  • Windows Phone 8,1
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.iOS (Classic)

Это потому, что «что-то» не поддерживается в одной из фреймворков, на которые я нацеливаюсь? Тогда почему VS позволяет мне использовать и показывать его в автозаполнении?

ответ

3
using System.Drawing; 

Это, вероятно, немного более актуально для того, что вы сделали, чтобы получить это сообщение об ошибке. Вы использовали кувалду, чтобы распознать признак. Мы должны догадаться об этом, но одним из способов, который вы, возможно, сделали с помощью Project> Добавить ссылку> Обзор> выбрать System.Drawing.dll из подкаталога c: \ windows \ microsoft.net. Кажется работать просто отлично.

И предположительно вы использовали подобный кувалдой на mscorlib.dll, чтобы распознать MarshalByRefObject. Хотя это гораздо сложнее сделать, так как IDE может сказать, что это неверно, mscorlib.dll уже включен в набор ссылок. Возможно, вы отредактировали файл проекта вручную, трудно догадаться.

Не используйте кувалды.

Проект PCL уже имеет ссылку на все сборок сборки, которые вы можете использовать. Они не перечислены отдельно в узле «Ссылки» вашего проекта, они свернуты в одном узле «.NET».

Это не сделано, чтобы сделать вашу жизнь несчастной, она гарантирует, что вы не можете случайно использовать класс, который недоступен ни одной из выбранных вами целей. Экономит вас от выяснения в самое худшее время, после того, как вы потратили несколько недель, написав код, проверив его до совершенства на своей машине-разработчике и попробуйте запустить его на телефоне. Кабум, не может работать. По ручью, без весла, недели потеряли.

System.Drawing доступен только на настольных компьютерах. Аналогично, MBRO доступен только в полной версии CLR, а не в версии .NETCore. Невозможно работать, MBRO требует удаленного доступа, функцию, которая была вырезана из .NETCore, чтобы сделать ее «основной». Вам нужно будет найти другой способ выполнить то, что вы хотите сделать. Нет руководства, вопрос недостаточно подробный.

+0

Вещь, которую я нахожу странной, заключается в том, что я могу создать графический объект, но как только я набираю вызов метода на нем, он показывает эту ошибку в VS. Я никогда не ожидал, что он будет поддерживаться на Android и т. Д., Но получил ложную надежду, поскольку сначала он позволял мне создавать объекты «Graphics». Мне нравится этот ответ, 24 часа, чтобы наградить щедрость. – Doomsknight

 Смежные вопросы

  • Нет связанных вопросов^_^