2011-02-08 81 views
1

我遇到以下問題。爲了更改已編譯的可執行文件的名稱,我更改了程序集的名稱。但之後,我無法從文件中打開舊的二進制序列化對象。我有一個SerializationException:「無法找到程序集‘OldAssembly’重命名程序集後的反序列化問題

我知道,它可以通過創建自定義SerializationBinder並覆蓋BindToType mehod有某種程度上解決,但我不知道該怎麼做

任何提示或暗示的讚賞。

+2

難道你不能只改變程序集的名稱,而是改變構建的可執行文件的名稱? – 2011-02-08 16:17:34

+0

我不完全確定如何更改程序集的名稱將影響exe文件的名稱......您的意思是您更改了您的應用程序項目的名稱? – NotMe 2011-02-08 16:54:20

回答

1

您是否使用[DataContract]或[Serializable接口]來標記你的對象序列化?

如果您使用DataContract你可以改變你的新對象的XML命名空間,因此深得尋找舊的組件/類型:

[DataContract(命名空間=「http://schemas.datacontract.org/2004/07/Your.Old.Namespace.ClassName」)]

我這樣做最近當我是從一個運動序列化型組裝到另一個。