來翻新老專案 (1) - 升級 .net 8.0
時間過得真快,現在已經是 2025 年了
原本想要介紹一些讓程式看起來更簡潔的程式寫法
因為我在自介裡面說過自己追求易於閱讀的程式碼,但卻沒有出過類似的文章中內容
只是我一直想不到該怎麼介紹,連舉例都想不到 🙃
為了尋找素材,去翻了一下以前寫的 C# 專案
剛好翻到一個適合翻新的陳年老專案
於是想說乾脆改寫紀錄自己翻新重構的過程
雖然這個專案後面應該會被蛋雕(丟掉)
但還是想試著翻新來玩玩
這個專案叫 MapleLooker,是楓之谷這款遊戲的資源讀取器
以前從各論壇搜刮來各種資源,用 .Net Framework WinForm 寫出來的專案
專案歷史
以前學生時期很喜歡去翻楓之谷的檔案,當時還載了各國的楓之谷來拆檔
後來我從網路上找來一堆資源,拼接出解析遊戲檔案的 Library
由於早期的拆檔程式我覺得不太好用,有時會遇到改版後噴錯的問題,所以想說自己寫一個
這個專案的程式碼最後編輯於 2016 年,距今已經有 8 年多了
當初覺得這個專案寫得還算不錯,經過多次改版都不太會噴掉
大概是因為功能太少,沒什麼歷史包袱的關係
現在回來看裡面的程式,寫得挺爛的😆
但也因此能夠作為重構跟翻新的好題材
加入 Git 版控
我接觸 git 的時間比較晚,大概是 3、4 年前
所以這個專案理所當然的沒有 git
在開始之前,我需要先初始化 git,讓專案有版控可以紀錄我的改動
升級 .net 8.0
今天的重點,把這個陳年專案從 .Net Framework 升級到 .Net Core
除了可以使用新的 C# 語法之外,這樣也才能支持我習慣的 VSCode
轉換期間需要打開 Visual Studio
這邊我依照 Visual Studio UI 的指引,選擇了 .NET Upgrade Assistant 插件做升級
過程用 GUI 點一點,專案就升級成 .Net Core 8.0 了 🎉
套件改使用 Nuget 集中管理
這個專案有用到 Bass.NET,它將 bass 這個聲音函式庫包裝成 .NET 介面,個人非商業使用免費
原先都是直接下載 dll 並引入到專案
很高興官方有出 .Net Core 版本,而且也可以用 Nuget 安裝
所以我就把舊的 dll 給砍了改用 Nuget,這樣除了原生的 dll 之外,就不用額外下載 .Net 的 Dll 了~
標記 SupportedOSPlatform
不確定從哪個版本開始,.Net Core 的程式需要在使用 WinForm 的程式上標記 SupportedOSPlatform("windows")
由於 .Net Core 已經可以跨平台,使用 Windows 的 API 確實比較怪,能理解標記的用意
只不過不設定就會跳一堆 CA1416 警告,其實挺煩的
還好這個專案不大,我就把大部分的 class/method 都找到並標記 SupportedOSPlatform("windows")
完成升級
總算是把專案升級成 .Net Core 專案了,其實過程還蠻順暢的
原本以為升級要自己寫專案檔,幸好微軟有出升級插件可以使用
附上這個陳舊專案的程式圖:
介面看起來非常陽春 🙂
以前都想要自己用 GDI+ 繪製 WinForm,不過效果並不好,也缺少緩動效果
C# 好看的 UI Library 不好找,好像也只能改用 UWP 了
UWP 至少有 WinUI 可以用,比 WinForm 好看太多了
現在的應用程式好像比較多使用 Electron + Web 前端,但 Electron 實在太肥了,所以我不考慮使用