winform程序反序列化提示找不到程序集

算球? 2019-08-13 02:26:20
在程序里把数据用BinaryFormatter序列化了,然后我把项目的程序集名称改掉了,然后反序列化原来的数据的时候就提示找不到程序集,虽然再把程序集名称改回去就好了,但是现在要修改程序集名称啊,不能改回去啊。该怎么办啊,求大佬解答,网上找了半天了,暂时还没找到能用的方法。。。
...全文
185 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
算球? 2019-08-13
  • 打赏
  • 举报
回复
引用 2 楼 github_36000833 的回复:
BinaryFormatter就是这种德行,它的序列化数据包括了完整的类型信息。 如果你要兼容以前版本的数据,最容易做的就是保留数据类在旧的程序集下,作为兼容。 用代码做也可以,稍微复杂一些,具体例子可以参考微软的SerializationBinder: https://docs.microsoft.com/zh-cn/dotnet/api/system.runtime.serialization.serializationbinder
好的,谢了,我看看去
算球? 2019-08-13
  • 打赏
  • 举报
回复
引用 7 楼 datafansbj 的回复:
你可以通过中间转换来解决这个问题。就是使用原程序集反序列化,再通过类似 JSON 转换成新程序集的数据。
好的,谢谢
算球? 2019-08-13
  • 打赏
  • 举报
回复
引用 6 楼 XBodhi. 的回复:
那可能是我看错了。推荐你用 JSON 或 XML 存,如果非得用这个,你需要先吧他 导成 MemoryStream 可能好一些。
好的,谢谢
datafansbj 2019-08-13
  • 打赏
  • 举报
回复
你可以通过中间转换来解决这个问题。就是使用原程序集反序列化,再通过类似 JSON 转换成新程序集的数据。
XBodhi. 2019-08-13
  • 打赏
  • 举报
回复
那可能是我看错了。推荐你用 JSON 或 XML 存,如果非得用这个,你需要先吧他 导成 MemoryStream 可能好一些。
算球? 2019-08-13
  • 打赏
  • 举报
回复
引用 4 楼 XBodhi. 的回复:
数据你不是说是个 DLL 吗,为什么要存成 DLL 格式。换个其他的格式不行吗。
我没说dll啊,就是程序用BinaryFormater把数据存为二进制。没存dll啊,直接序列化到硬盘上
XBodhi. 2019-08-13
  • 打赏
  • 举报
回复
数据你不是说是个 DLL 吗,为什么要存成 DLL 格式。换个其他的格式不行吗。
算球? 2019-08-13
  • 打赏
  • 举报
回复
引用 1 楼 XBodhi. 的回复:
BinaryFormatter 二进制序列号,你这么做的目的是什么。
存数据啊,我接手的老的项目是用它存的数据
github_36000833 2019-08-13
  • 打赏
  • 举报
回复
BinaryFormatter就是这种德行,它的序列化数据包括了完整的类型信息。 如果你要兼容以前版本的数据,最容易做的就是保留数据类在旧的程序集下,作为兼容。 用代码做也可以,稍微复杂一些,具体例子可以参考微软的SerializationBinder: https://docs.microsoft.com/zh-cn/dotnet/api/system.runtime.serialization.serializationbinder
XBodhi. 2019-08-13
  • 打赏
  • 举报
回复
BinaryFormatter 二进制序列号,你这么做的目的是什么。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧