2008年6月12日

ConvertZ 會造成 .snk 檔案損毀

如同在上一篇Blog中提到的,前陣子因為把 OS 重灌成 Vista (English) 之後,完全不支援 Big5,因此利用 ConvertZ(8.02) 批次將整個專案的內容轉換為UTF-8,但是轉換後發生一個問題,重新 compile solution 的時候,會出現「建立組件資訊清單時發生錯誤:資料錯誤。」的錯誤訊息,完全搞不懂發生什麼事情。

從昨天下午Try到今天早上終於發現,當我在 AssemblyInfo.vb 中刪除 KeyFile 的路徑(也就是不要去 build Strong-Name DLL)之後,solution 就可以正常 compile 了!只要指定 KeyFile 的路徑,就會發生上述的錯誤,因此懷疑八成是 KeyFile 本身損毀。果然,從 version control server 上面抓下來舊的 .snk 有 596 bytes,但是經過 ConvertZ 轉換後的 .snk 剩下 2 bytes,看來裡面的內容是整個消失了。討厭的地方是,在 Windows 裡面,低於 1kb 的檔案大小永遠顯示為 1kb,因此沒有細看內容還真的很難發現檔案大小的差異。因此我把舊的 .snk 覆蓋掉新的 .snk 之後,solution 又恢復正常了。

後來我再做了一次實驗,果然經過 ConvertZ 的轉換,.snk 檔會從 596 bytes 變成 2 bytes,造成 IDE 吐出等於廢話的錯誤訊息 ...

似乎在 VS 2003 裡面,預設會將檔案編碼設定為 Big5,但是到 VS 2005 就會設定為 UTF-8,
在現在的環境裡面,不用 Unicode 簡直就是愚蠢阿,Google 前陣子的 blog 中就有提出,根據他們龐大的網頁檢索資料,採用 Unicode 的網站數量穩定上升,幾乎其他所有編碼的網站數量都穩定下降。

有需要將 VS2003 專案轉換為 VS 2005 並且一並處理編碼轉換的朋友,要小心了 ...

沒有留言:

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D