DataContractJsonSerializer 在 Debug 版本下正常工作而在 Release 版本下出错的问题

CDboyOne 2018-12-25 04:11:37
首先,我有一个 Database 程序集,里面有一些数据类的定义,并在这个程序集里面定义了一个 GetData() 静态方法,方法内利用 DataContractJsonSerializer 类,对应某些数据类进行反序列化。

然后,我在另一个程序集里面调用 GetData() 方法,想得到反序列化后的结果。在 Debug 版本下这个方法正常工作,但是在 Release 版本下会抛出 InvalidDataContractException 异常!

细节方面,数据类和 GetData() 方法所在的程序集是一个 Windows 15063 以上的 UWP 类库,调用它们的程序集是一个相同版本的 UWP 应用。我的数据类全部应用了 DataContract 和 DataMember 属性,这些是不用担心的,因为在 Debug 版本下可以正常工作……

有人知道这是什么情况吗?

DataContractJsonSerializer ds = new DataContractJsonSerializer(Type.GetType(className));
using (MemoryStream ms = new MemoryStream(bytes))
{
return ds.ReadObject(ms);
}
...全文
165 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
平底锅锅锅 2018-12-26
  • 打赏
  • 举报
回复
生成路径所需的东西可能不一样。把exe删掉,看是否生成。把debug下copy过去
  • 打赏
  • 举报
回复
引用 3 楼 天空侠 的回复:
[quote=引用 2 楼 likelinsiyuan 的回复:]
Debug和Release下对该程序集的引用是否同一版本?看下,两个文件夹下的程序集的修改时间是否一致


这个程序集是我自己写的,有改动的时候都会重新生成,所以修改时间的确不一样,这个跟产生的错误有什么联系?[/quote]
你先试着把debug文件夹下的程序集放到release下,再跑release看会不会报错
CDboyOne 2018-12-25
  • 打赏
  • 举报
回复
进入 try 块时,try 块之外的局部变量不会变化吧?我一楼的代码是写在一个 try catch 块里面的,那个 className 和 bytes 是块之前初始化的局部变量。
CDboyOne 2018-12-25
  • 打赏
  • 举报
回复
引用 2 楼 likelinsiyuan 的回复:
Debug和Release下对该程序集的引用是否同一版本?看下,两个文件夹下的程序集的修改时间是否一致


这个程序集是我自己写的,有改动的时候都会重新生成,所以修改时间的确不一样,这个跟产生的错误有什么联系?
  • 打赏
  • 举报
回复
Debug和Release下对该程序集的引用是否同一版本?看下,两个文件夹下的程序集的修改时间是否一致

110,538

社区成员

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

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

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