【问题标题】:Unable to find assembly within same project and DLL while deserialize反序列化时无法在同一项目和 DLL 中找到程序集
【发布时间】:2017-07-05 01:25:58
【问题描述】:

序列化单个类中不同类列表的数量。序列化功能正常工作,但反序列化功能不能正常工作。

错误:“无法找到程序集 'SEPL.AutoDCRBIM,版本 = 1.0.0.0, Culture=neutral, PublicKeyToken=null'。”

这两个功能都在同一个项目而不是不同的项目中运行。

【问题讨论】:

  • 你使用哪个序列化器
  • ` 使用 (Stream stream = File.Open(path, FileMode.Create)) { BinaryFormatter bin = new BinaryFormatter(); //bin.Binder = new AllowAllAssemblyVersionsDeserializationBinder(); bin.Serialize(流,clsCheckModelErrors.bimdcr); }`

标签: c#


【解决方案1】:

BinaryFormatter 使用类型信息。类型由其程序集定义。因此,“SomeType in AssemblyA”与“SomeType in AssemblyB”完全不同,即使它们碰巧是从同一个源文件编译的。

使用 XMLSerializer 代替,它是基于契约的序列化器,其中看起来足够相似的类很好,即使它们位于不同的程序集中

【讨论】:

  • 我使用的 DLL 与 Type A 和 Type B 不同。
  • 序列化和反序列化函数都使用相同的程序集,即项目中的类文件。但没有运气。奇怪的是序列化函数运行良好。它只是反序列化功能。我什至将这两个函数作为一个函数中的继续代码再次序列化工作,但反序列化选择不工作。
  • 你试过xmlserializer了吗??
  • no....实际上我不能使用 xmlserializer,因为不同项目之间共享的大部分 DLL 区域只有特定项目会在其他项目中给出该问题,它工作正常...
猜你喜欢
  • 2019-05-04
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 2017-07-09
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多