2017-02-09 34 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

相關問題