2015-02-09 38 views
0

我爲駐留在c#.net4.5程序集中的自定義類創建了調試器可視化程序。在IVisualizerObjectProvider上調用GetObject時,無法從System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()函數中找到程序集異常。IVisualizerObjectProvider GetObject拋出程序集未找到異常

我所有被CustomClass和父類引用的類都有[Serializable]屬性。該程序集與MoreLinq依賴項一起放置在MyDocuments \ Visual Studios 2013 \ Visualizers文件夾中的Debugger Visualizer程序集旁邊。

任何人都可以給我任何指針?

感謝,

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

using Microsoft.VisualStudio.DebuggerVisualizers; 


[assembly: System.Diagnostics.DebuggerVisualizer(
typeof(CustomClassVisualiser), typeof(VisualizerObjectSource), 
Target = typeof(AnotherAssemblyNamespace.CustomClass), Description = "Custom class Visualiser")] 
namespace Test 
{ 
    using System.Windows; 

    using Microsoft.VisualStudio.DebuggerVisualizers; 

public class CustomClassVisualiser : DialogDebuggerVisualizer 
{ 
    protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider) 
    { 
     MessageBox.Show("In"); 

     var objectToVisualise = objectProvider.GetObject();// Failing here!! Unable to find assembly System.Runtime.Serialization.SerializationException 

     var type = objectToVisualise.GetType(); 

      MessageBox.Show(type.FullName); 

      MessageBox.Show(""); 

      //window.ShowDialog(); 
     } 
    } 
} 

回答

0

閱讀你的問題,它看起來像你從一個應用程序序列化和反序列化的另一個。你不是嗎? 如果是這樣的話,這是你的問題的原因:序列化在二進制文件中放入一個exe相關簽名,並對這個簽名進行反序列化檢查。 您可以通過兩種方式解決這個問題:

  1. 在一間由兩個應用程序
  2. 使用XML序列化,而不是二進制序列化調用的DLL的序列化/反序列化的代碼(這並不總是可能的,這取決於您想要序列化的數據)

您可以在this article中找到關於此情況的更多詳細信息。

相關問題