想要針對既有產品從 .NET migrate 到 .NET Core 的朋友,不只有關注在代碼曾經的相容性或是 package 的相容性。
測試專案、CI 流程還是很多坑的。
可以參考一下熱血的 小林 正在踩的坑...
睡前無聊實驗了一下,如何將部門現有 .NET Framework 撰寫的元件,轉移上 .NET Core 平台,相關的轉移 SOP 該怎麼制訂。
實驗結果,在開發建置上,沒遭遇到什麼困難。比方說要將現行的程式碼,改以 .NET Core 建置或打包成 NuGet package,基本上沒什麼問題。兩者間的相容性已經相當高,我個人覺得,已經到了可以建議遷移、部署上生產環境的成熟度了。
但要正式做導入,其實反而不是程式碼層級的開發問題,而是 .NET Core 的工具在向下相容上,仍然有不少需要突破的地方。比方說︰
1. 現行所撰寫的單元測試專案,由於我們使用了舊版 MsTest 的一些特殊設定方式 (ex: runsettings file),所以無法轉移上新版的 MsTest 上去,連帶也無法轉換到 .NET Core 平台。
2. 現行我們使用 SpecFlow 所撰寫的整合測試專案,由於上述原因,加上 SpecFlow .NET Core 版仍然在開發中,所以也沒辦法轉移到 .NET Core。
3. 因為第 1 點,所以我們無法使用 MS 建議的 Multi Target Framework 的方式來建立測試專案。只能讓測試專案留在 .NET Framework 平台上。
4. 因為第 3 點,所以我們也無法使用 Multi Target Framework 的方式來建立 Production code 專案。目前只能建立兩種專案檔 (.csproj),一個使用 .NET Framework,另一個則使用 .NET Core。
現階段如果要突破上述的問題,我目前想像的做法是︰
1. 在現行專案目錄上建立 .NET Core 的專案檔 (.csproj)
2. 確保 .NET Core 版專案檔在包含現有程式碼的前提下,處理好相依性,讓它可以正確建置。
3. 如果有 .NET Core 專屬的邏輯,或因為不相容而改寫的部份,改在 .NET Core 平台下的測試專案中進行對應測試。
4. 針對 .NET Core 的 CI 流程,合併進行 .NET Framework 版與 .NET Core 版的測試。如果兩者都通過才進行 NuGet package 打包與發佈。
大概是這樣,可以睡了 XD
「nuget package」的推薦目錄:
- 關於nuget package 在 91 敏捷開發之路 Facebook 的最佳解答
- 關於nuget package 在 Working with the NuGet registry - GitHub Docs 的評價
- 關於nuget package 在 How do I install a NuGet package .nupkg file locally? - Stack ... 的評價
- 關於nuget package 在 NuGet dependencies 的評價
- 關於nuget package 在 How to Publish NuGet Packages with GitHub - Cogworks 的評價
- 關於nuget package 在 Working with NuGet packages and GitHub - codecentric AG Blog 的評價
- 關於nuget package 在 Generate a .NET Core NuGet Package with GitHub Packages ... 的評價
nuget package 在 NuGet dependencies 的推薦與評價
Paket allows to reference NuGet packages in your application. Sources. Sources are defined by the source <address> statement. Paket supports multiple sources in ... ... <看更多>
nuget package 在 Working with the NuGet registry - GitHub Docs 的推薦與評價
You can configure the dotnet command-line interface (CLI) to publish NuGet packages to GitHub Packages and to use packages stored on ... ... <看更多>