2015-04-04 78 views
0

我使用BinaryFormatter序列化和反序列化来自/到本地磁盘的覆盖对象;但是我有一个例外,那就是每次我在设计时重建我的项目。VB.Net二进制序列化异常

类型[A]是不不与型[B]可以使用,考虑到论文实例在不同的装配至极我发现每个操作中:

C:.... \应用程序数据\本地\微软\ VisualStudio \ 12.0 \ ProjectAssemblies

每次我重建我的项目,在那里创建一个实例。

是否有任何可以设置BinaryFormatter更灵活的原因,因为这些实例是VS创建的程序集与我的项目文件夹不同? 谢谢

+0

如果您的类很小,则更喜欢XML,因为BinaryFormatter转换是强类型的。 – 2015-04-04 22:59:03

+0

如果您试图在一个程序集中进行序列化并在另一个程序集中进行反序列化,BinaryFormatter将不会这样做。 [ProtoBuf-NET](https://code.google.com/p/protobuf-net/)是一个出色的替代品:更小的输出,更快速和更大的组装不可知 – Plutonix 2015-04-04 23:28:14

+0

Protobuf不错,但我认为这应该不是问题毕竟,由于VS应该能够绕过这些问题,因为作为一个开发者,你对目前的应用程序感到厌烦。 – Abinonos 2015-04-05 09:04:37

回答

0

尝试很多事情之后,我选择了一种设计模式下检查,以避免在Visual Studio设计系列化不相容例外:

If Not DesignMode Then 
     GWCamerasUtilities.LoadCamerasOverlay() 
End If 

我的下一个项目将在的Protobuf肯定中继由Plutonix的建议