2017-02-09 31 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
  • 视窗8
  • Windows手机8.1
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.iOS(经典)

这是因为我所针对的框架之一不支持“某些东西”吗?那么为什么VS让我使用并显示在自动完成?

回答

3
using System.Drawing; 

这可能与您为获取此错误消息所做的操作有关。你用大锤来确认使用指令。我们必须猜测它,但您可能已经完成的一种方式是使用Project> Add Reference> Browse按钮>从c:\ windows \ microsoft.net子目录中选取System.Drawing.dll。 似乎工作得很好。

大概你在mscorlib.dll上使用类似的大锤来识别MarshalByRefObject。尽管这样做很难做,因为IDE可以判断它是无效的,mscorlib.dll已经包含在参考集中。也许你手工编辑了项目文件,很难猜测。

请勿使用大锤。

一个PCL项目已经有一个参考所有您可以使用的框架程序集。它们没有单独列在项目的References节点中,它们在单个“.NET”节点中折叠。

这不是为了让你的生活变得悲惨,而是确保你不会意外地使用你选择的目标之一所没有的类。花费数周时间编写代码,在开发机器上对其进行完美测试,然后尝试在手机上运行代码,可以让您在最糟糕的时间找到答案。 Kaboom,无法工作。一条小溪,没有桨,几周失踪。

System.Drawing仅在桌面计算机上可用。同样,MBRO仅适用于CLR的完整版本,而不是.NETCore版本。无法工作,MBRO需要远程处理,这是.NETCore中的一个功能,使其成为“核心”。你必须找到另一种方式来完成你想要做的事情。没有指导,问题不够详细。

+0

我觉得很奇怪的是我可以创建一个图形对象,但只要我输入一个方法调用,它就会在VS中显示这个错误。我从来没有料到它会被android等支持,但它被赋予了虚假的希望,因为它首先让我创建'Graphics'对象。我喜欢这个答案,24小时奖励赏金。 – Doomsknight

相关问题