【问题标题】:Exception in Deserialize process反序列化过程中的异常
【发布时间】:2012-10-08 07:40:50
【问题描述】:

我写了一个有几个类的dll。其中之一称为数据设计。

[Serilizible]
public class DataDesign
    {
        [NonSerialized]
        HorizantalFields _horizantalFields;
        [NonSerialized]
        VerticalFields _verticalFields;
        [NonSerialized]
        GeneralDataDesignViewType _dataDesignView;
        [NonSerialized]
        Dictionary<FieldTemplateType, string> _templateTable;
        [NonSerialized]
        public List<string> ProcessedData;

        List<IField> _fields; 
    }

当我在我的应用程序中使用这个 dll 时,我在反序列化过程中遇到了问题。序列化以成功告终。但是在反序列化中我有一个例外。

例外是

“找不到程序集 'AnalyzingData, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'。”

AnalyzingData 是 dll 的名称。

DeSerilizeClass()
{
                    BinaryFormatter bin = new BinaryFormatter();
                    dataDesign=new DataDesign();

                    DataDesign dd= (DataDesign)bin.Deserialize(stream);
}

Serilize()
{
                    using (FileStream sr = new FileStream(String.Format(@"{0}\{1}", Parameters.SavedConfigurationsDirectory, dataDesignName),FileMode.CreateNew, FileAccess.Write))
                    {
                        BinaryFormatter bin = new BinaryFormatter();
                        bin.Serialize(sr, this);
                    }
}

//这个数据设计类

我该如何解决这个问题?

MS Visual Studio2010。 Windows 7的 感谢您的关注!

【问题讨论】:

  • 报错信息哪一部分不够清楚?
  • Version=1.0.0.0 是通常的挂断。您当前的 AnalyzingData.dll 的 [AssemblyVersion] 是什么?使用 Fuslogvw.exe 进行故障排除。

标签: c# oop c#-4.0


【解决方案1】:

反序列化的任何进程都需要访问您的 AnalyzingData Dll,即它需要位于该应用的 bin 文件夹中或可以从中加载它的其他位置。

【讨论】:

  • 没问题,很高兴为您提供帮助。
【解决方案2】:

BinaryFormatter 序列化图中的具体 对象。即使您将某些内容公开为IFieldBinaryFormatter 也只会查看实际的SomeTypeOfField : IField 实例。这意味着要反序列化此数据,您需要序列化数据时正在使用的程序集。听起来当您序列化时,它从AnalyzingData 程序集中获得了一些类型(在图中)。这意味着要反序列化此数据,您将再次需要此程序集。

使用Binder 可以通过一些复杂的方法来解决此问题,但在大多数情况下,我建议选择映射到您的场景的序列化程序:如果您想在没有相同原始类型/程序集的情况下进行反序列化,那么您应该使用基于合约的序列化器。

或者,只需找到 AnalyzingData.dll,并添加对它的引用,以便它与您的应用程序一起部署(也将 copy-local 设置为 true)。

【讨论】:

  • 我必须做些什么来消除这个异常?
猜你喜欢
  • 2020-09-18
  • 2021-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-09
  • 2019-08-22
  • 2014-06-04
相关资源
最近更新 更多