2011-02-07 114 views
2

讓我簡單地解釋我的架構,然後再問我的問題。我有一個客戶端應用程序調用Web服務並將其傳遞給一些數據項。 Web服務使用此數據執行一些查找,然後通過使用BinaryFormatter作爲字節數組向客戶端返回一個二進制序列化對象。客戶端然後反序列化對象並使用它。我的問題是我不得不重命名服務器用於新版本的程序集。這在客戶端反序列化時造成問題。對我來說,部署一個新客戶端不是一種選擇,所以可以使用新的程序集名稱,所以我的問題是,是否有方法可以更改序列化期間正在編寫的程序集名稱。我知道如何使用SerializationBinders進行反序列化,但這並不能解決我的問題,因爲這需要部署新客戶端。在二進制序列化期間更改程序集名稱

我目前對win窗體應用程序和web服務都使用C#2.0。

+0

從字面上看,這只是名稱的變化嗎? – 2011-02-07 22:43:01

回答

0

如果我使用.NET 4,那麼Thomas的解決方案將是完美的。但是,.NET 2.0不提供此功能。相反,我只是將dll重新命名爲它們。我想最終重命名dll,但在這一點上,我還沒有找到一個可行的解決方案,我不需要爲客戶部署一些東西。

0

對於每個移動到另一個程序集的類型,您都可以重新創建一個空的程序集,其中包含僅包含AssemblyInfo.cs的舊名稱,其中包含類型重定向: [assembly:TypeForwardedTo(typeof(MyClassName))] 。 Ofc這個大會應該引用新的。

但是通常考慮不使用二進制序列化來處理複雜的數據結構,因爲它不適合在組件之間移動類型等變化。

相關問題