我有一个普通的类库,其函数可以将字节数组转换为图像。
现在我删除了那个类库,并创建了一个具有相同名称的可移植类库,现在代码似乎不再起作用,并且在“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");
}
}
}
}
我的项目目标是:
这是因为我所针对的其中一个框架中不支持“某些东西”吗?那么为什么VS让我使用并在自动完成时显示它?
答案 0 :(得分:3)
using System.Drawing;
这可能与您为获取此错误消息所做的更为相关。您使用大锤来获取使用指令。我们必须猜测它,但你可能采取的一种方式是Project>添加参考>浏览按钮>从c:\ windows \ microsoft.net子目录中选择System.Drawing.dll。 似乎工作正常。
据推测,你在mscorlib.dll上使用了类似的大锤来识别MarshalByRefObject。虽然这很难做,因为IDE可以判断它无效,但mscorlib.dll已经包含在引用集中。也许你手工编辑了项目文件,很难猜到。
不要使用大锤。
PCL项目已经引用了您可能使用的所有框架程序集。它们未单独列在项目的“引用”节点中,它们在单个“.NET”节点中折叠。
这样做并不是为了让你的生活变得悲惨,它确保你不会意外地使用你选择的某个目标上没有的课程。在您花费数周时间编写代码,在开发机器上测试完美并现在尝试在手机上运行它之后,可以避免在最糟糕的时间发现。 Kaboom,无法工作。上了一条小溪,没有划桨,几周就丢了。
System.Drawing仅适用于台式机。同样,MBRO仅适用于CLR的完整版本,而不适用于.NETCore版本。无法工作,MBRO需要远程处理,这一功能从.NETCore中删除,使其成为“核心”。你必须找到另一种方法来完成你想做的事情。没有指导,问题不够详细。