Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

.NET 7 升級教戰手冊_V1.0.pdf

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 69 Anzeige

.NET 7 升級教戰手冊_V1.0.pdf

Herunterladen, um offline zu lesen

● 升級前的前置作業
-.NET 6 LTS / .NET 7 STS
● 專案檔升級 (談 upgrade-assistant)
● 專案使用的第三方套件注意事項
● Web.Config / AppSettings 的升級小技巧
- 客製化 Configuration.AppSettings[index] 讓升級衝擊降低
● 如何升級 EntityFrameworkCore?
- 客製化缺少的相關擴充方法降低升級的衝擊
● 將 Newtonsoft.Json 改為 System.Text.Json
● Others: 其他 Middleware (Startup) 注意事項

● 升級前的前置作業
-.NET 6 LTS / .NET 7 STS
● 專案檔升級 (談 upgrade-assistant)
● 專案使用的第三方套件注意事項
● Web.Config / AppSettings 的升級小技巧
- 客製化 Configuration.AppSettings[index] 讓升級衝擊降低
● 如何升級 EntityFrameworkCore?
- 客製化缺少的相關擴充方法降低升級的衝擊
● 將 Newtonsoft.Json 改為 System.Text.Json
● Others: 其他 Middleware (Startup) 注意事項

Anzeige
Anzeige

Weitere Verwandte Inhalte

Ähnlich wie .NET 7 升級教戰手冊_V1.0.pdf (20)

Weitere von Gelis Wu (20)

Anzeige

Aktuellste (20)

.NET 7 升級教戰手冊_V1.0.pdf

  1. 1. .NET 7 升級教戰手冊 Gelis
  2. 2. 吳俊毅 Gelis - FB 軟體開發之路-經營者 關於我 • 部落格 (Gelis 技術隨筆) http://gelis-dotnet.blogspot.tw/ • FB 粉絲團(Gelis 的程式設計訓練營) https://www.facebook.com/gelis.dev.learning/?ref=bookmarks • FB 社團 (軟體開發之路) https://www.facebook.com/groups/361804473860062/?ref=ts&fref=ts 集英信誠-資深.NET技術顧問
  3. 3. .NET 7 升級教戰手冊 • 升級前的前置作業 • .NET 6 LTS / .NET 7 STS • 專案檔升級 (談 upgrade-assistant) • 專案使用的第三方套件注意事項 • Web.Config / AppSettings 的升級小技巧 • 客製化 Configuration.AppSettings[index] 讓升級衝擊降低 • 如何升級 EntityFrameworkCore? • 客製化缺少的相關擴充方法降低升級的衝擊 • 將 Newtonsoft.Json 改為 System.Text.Json • Others: 其他 Middleware (Startup) 注意事項
  4. 4. 升級前的前置作業
  5. 5. 升級前的前置作業
  6. 6. .NET 發行節奏 • 發布類型 • 長期支持 (LTS, Long Term Support) LTS 版本在初始發布日期後的三年內受支持 • 標準期限支持 (STS, Standard Term Support) STS 版本在後續 STS 或 LTS 版本發布後的六個月內受支持,每 12 個月發布一次,因此 STS 的支持 期為18 個月
  7. 7. 專案檔升級 (談 upgrade-assistant)
  8. 8. upgrade-assistant • 從 v0.4.355802+ 才開始支援 Upgrade 到 .NET 7
  9. 9. upgrade-assistant • 從 v0.4.355802+ 才開始支援 Upgrade 到 .NET 7 • 並確認已經安裝 VS2022 v17.4.1 以上 • 可先執行 analyze 確認是以 "C:Program Filesdotnetsdk7.0.100" 來執行
  10. 10. upgrade-assistant 升級 net451
  11. 11. 開始升級專案
  12. 12. 開始升級專案
  13. 13. 專案使用的第三方套件注意事項
  14. 14. 專案使用的第三方套件注意事項 • 最好是使用知名套件 • 盡量繼續使用原作者有標章的元件
  15. 15. 專案使用的第三方套件注意事項 • 最好是使用知名套件 • 盡量繼續使用原作者有標章的元件
  16. 16. 專案使用的第三方套件注意事項
  17. 17. 專案使用的第三方套件注意事項
  18. 18. 專案使用的第三方套件注意事項
  19. 19. 專案使用的第三方套件注意事項
  20. 20. Web.Config / AppSettings 的升級小技巧
  21. 21. 在 .NET Core 常見的 appSettings 注入 private readonly IConfiguration _configuration; private readonly IOptions<AppSettings> _appSettings; public HomeController(IConfiguration configuration, IOptions<AppSettings> appSettings) { this._configuration = configuration; this._appSettings = appSettings; } public IActionResult Index() { // (1). 直接產生 ConfigurationBuilder or ConfigurationManager 實體 IConfiguration app = new ConfigurationManager() .AddJsonFile(Path.Combine(AppContext.BaseDirectory , "appSettings.json")) .Build(); string? tfsAddress = app.GetSection("appSettings").GetValue<string>("TFSWebBaseAddress"); // (2).使用注入的 IConfiguration 介面來操作 string? ApID = _configuration.GetSection("appSettings").GetValue<string>("APID"); // (3).使用 IOptions<AppSettings> string? tfsAddress2 = _appSettings.Value.TFSWebBaseAddress; string? ApID2 = _appSettings.Value.APID; //..略
  22. 22. 但是我有一堆程式碼長這樣!?…
  23. 23. public class ConfigurationManager { private static string basePath = System.AppContext.BaseDirectory; private static IConfigurationRoot _configuration; public static string GetAppSettingByKey(string key) { return Configuration.GetSection("appSettings").GetSection(key).Value; } /// <summary> /// Index 物件參考 /// </summary> public static AppSetting AppSettings { get;set; } = new AppSetting(); } // 提供 Index 物件實作 public class AppSetting { public string this[string key] { get { return ConfigurationManager.GetAppSettingByKey(key); } } }
  24. 24. 手動修改 appSettings.json
  25. 25. 安裝『自定義套件』簡化升級需要修改的程式碼
  26. 26. 如何升級 EntityFrameworkCore?
  27. 27. Entity Framework 升級步驟 1). 移除 <ItemGroup> 2). 更改 NameSpace 3). 修改 Constructor 4). 更改 OnModelCreating 的參數類型 Parameters 5). 增加 Override OnConfiguring() 方法、撰寫並實作讀取 appSettings.json (安裝 Microsoft.Extensions.Configuration ) 6). 移除掉 ConnectionString 裡面從 .NET Core 開始不支援的 designer 的 metadata:// 字串, 修改成原生連線字串 7). 替所有 POCO 補上 Attribute [Key] => (因為原先設定在EDMX 的 CSDL 概念層與 SSDL 儲存 層上,移除掉後就沒有了) 8). 安裝客製化套件:EasyArchitect.EntityFrameworkCore.Exts 以繼續支援 SqlQuery() & ExecuteSqlCommand() 方法 9). 接續 8) 修改程式碼
  28. 28. 1). 移除 <ItemGroup>全 數 刪 除
  29. 29. 2). 更改 NameSpace
  30. 30. 3). 修改 Constructor
  31. 31. 4). 更改 OnModelCreateing 的參數類型 Parameters
  32. 32. 5). 增加 Override OnConfiguring() 方法 • 撰寫並實作讀取 appSettings.json • 安裝 Microsoft.Extensions.Configuration • 安裝 Microsoft.Extensions.Configuration.Abstractions • 安裝 Microsoft.Extensions.Configuration.FileExtensions • 安裝 Microsoft.Extensions.Configuration.Json
  33. 33. 6).移除 .NET Core 不支援的 metadata:// 字串 • 移除掉 ConnectionString 裡面從 .NET Core 開始不支援的 designer 的 metadata:// 字串,修改成原生連線字串
  34. 34. 7). 替所有 POCO 補上 Attribute [Key] • 因為原先設定在EDMX 的 CSDL 概念層與 SSDL 儲存層上,移除 掉後就沒有了
  35. 35. 8). 安裝客製化套件: EasyArchitect.EntityFrameworkCore.Exts
  36. 36. 9). 接續 8) 修改程式碼
  37. 37. 將 Newtonsoft.Json 改為 System.Text.Json
  38. 38. 使用 System.Text.Json 命名空間
  39. 39. Others: 其他
  40. 40. Others: 其他… 抽離掉的 System.Web 相關.. • 其他像是一定得抽離的 System.Web 像是 HttpContext、HttpRuntime、 HttpCookie、HttpSession、Environment...等,還是免不了必須改寫成由 DI (Dependency Injection) 相依性注入的方式 • HttpCookie 改為字串、必須可序列化的物件才可以 Cookie 來保存 • HttpSession改為字串、必須可序列化的物件才可以 Session 來保存
  41. 41. Others: 其他 • 客製化全新類別 NewCookie 取代 Cookie
  42. 42. Others: 其他 • AllowSynchronousIO • 這是 .NET Core 3.0~3.1 的重大變更之一,預設會停用同步伺服器作業 • 比如:HttpRequest.Body.Read 、 HttpResponse.Body.Write 和 Stream.Flush 。 這 些 API 一直都是執行緒耗盡和應用程式停止回應的來源
  43. 43. Q&A
  44. 44. 關於我
  45. 45. 工商服務
  46. 46. 工商服務
  47. 47. 工商服務

×