C# 如何使自定义文件类型可升级?

C# 如何使自定义文件类型可升级?,c#,file,.net-4.0,C#,File,.net 4.0,我有一个与我的应用程序关联的自定义文件类型,在这里我通过简单地将类实例序列化为文件来保存它 我希望能够通过向类添加更多属性来升级我的应用程序,也许还可以删除属性。我怎样才能让旧版本的应用程序与新文件一起工作——不管它能从新文件中得到什么,更重要的是,我怎样才能让新版本的应用程序使用旧文件?实现这一目标有什么共同的做法吗 在第一个版本发布之前,我会问这个问题——如何使文件类型易于升级 (谷歌搜索遇到了很多“噪音”。也许你应该看看协议缓冲区的C#实现。这是谷歌开发的一种序列化(http://code

我有一个与我的应用程序关联的自定义文件类型,在这里我通过简单地将类实例序列化为文件来保存它

我希望能够通过向类添加更多属性来升级我的应用程序,也许还可以删除属性。我怎样才能让旧版本的应用程序与新文件一起工作——不管它能从新文件中得到什么,更重要的是,我怎样才能让新版本的应用程序使用旧文件?实现这一目标有什么共同的做法吗

在第一个版本发布之前,我会问这个问题——如何使文件类型易于升级


(谷歌搜索遇到了很多“噪音”。

也许你应该看看协议缓冲区的C#实现。这是谷歌开发的一种序列化(http://code.google.com/p/protobuf-net/)它使用id进行属性标识。因此,序列化数据不会被属性名等绑定。

正如您在发布第一个版本之前所问的那样,我及时告诉您:从长远来看,您不会满意BinaryFormatter我认为您应该将存储对象模型与“操作对象”分开。

仅仅序列化程序的运行时状态是一种简单的序列化方法,但它可以防止再次对这些对象进行重大更改


我认为proto-buf很好,因为版本控制路径非常清晰。另外,XmlSerializer序列化类很好,因为它们可读性很好。

我认为有两种方法

  • 你可以使用瑜伽士提到的东西
  • 或者你可以转换成新的格式——VisualStudio,Royal TS,我想还有更多的人会这样做
这可能对@yogi有所帮助,您可以将您的评论变成一个答案。看起来很有希望。链接不是答案。如果@yogi可以总结页面的内容(并链接到页面),这将是一个答案。我认为有两种方法-你可以使用yogi提到的类似版本容忍序列化的方法,或者你可以转换为新格式-Visual Studio、Royal TS,我想还有更多的人可以这样做:)谢谢yogi,我以前不知道这件事。我相信,在某个时候,这将对我非常有用。