星期一, 4月 10, 2006

.Net 2.0 CLR 相容性

最近,同事在測試Crystal Reports的網頁是否能升級成asp.net 2.0,結果卻相當令人失望,因為.net 2.0的CLR並不能向下相容.net 1.1的程式,所以必須買新版的Crystal Reports才能再試著改版,這其中若有API的變化還要另外考量。

在GotDotNet的 Compatibility Considerations and Version Changes裏有提到:
"Backward compatibility means an application written for the .NET Framework version 1.0 can execute on version 1.1. The .NET Framework provides the highest degree of support for backward compatibility. Most applications that work on the current version of the .NET Framework will work on the next version of the .NET Framework. "

所以1.1版應該是向下相容1.0版的程式,但對2.0版與1.1版的相容性完全查不到,只有beta版的相容性列表。而根據我實測的結果,.net 1.1的程式在.net 2.0的CLR執行時,若沒有指定CLR版本是可以執行的。

但有指定版本則會去找.net 1.1的CLR來執行,若找不到,則會跳出畫面顯示找不到1.1版的CLR。
所以一般的exe檔確實有向下相容,但問題還在後面;我另外有個舊的dll則不能執行,因為那個dll有指定版本。

而Crystal Reports這些商用軟體或元件都有把RunTime版本寫死在dll裏,自然是沒辦法使用;就算沒有指定,要把所有相關的dll找出來,放在bin裏手動reference也是很痛苦的事。這種時候,就覺得Java好很多...

沒有留言: