日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

路遥工具箱全面迁移至 .NET 6.0 并发布 3.0 版本及迁移记录详解

發布時間:2023/12/4 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 路遥工具箱全面迁移至 .NET 6.0 并发布 3.0 版本及迁移记录详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隨著 .NET 6.0 的發布 NewLife 組件也進行了升級,并在 2022 年 1 月份全面停止了對 .NET Framework 的支持框架依賴升級至 .NET Standard 2.1 。

2022 年新年到來之際,筆者也打算將路遙工具箱全面遷移至 .NET 6.0 同時發布 3.0 版本。這意味著路遙工具箱將獲得更先進的技術和加快的運行速度。

從 .NET Framework 4.6.2 到 .NET 6 的遷移過程

更改目標框架

因為從立項之初就采用了新版本的 csproj 格式,所以遷移過程并不復雜。在項目屬性頁面中將目標框架從 .NET Framework 4.6.2 更改為 .NET 6.0 之后,大部分工作其實就已經完成了。需要注意的是“目標操作系統版本”和“受支持的 OS 版本”需要設置為 7.0 才可以兼容 Windows 7 操作系統。

移除過時依賴

在 .NET Framework 4.6.2 環境下,路遙工具箱通過引用類庫的方式添加了對 System.ComponentModel.DataAnnotations 和 WindowsFormsIntegration 程序集的依賴。在 .NET 6.0 中,這兩個程序集已經被默認包含,所以以下代碼可以從項目文件中刪除:

<ItemGroup><Reference Include="System.ComponentModel.DataAnnotations" /><Reference Include="WindowsFormsIntegration" /> </ItemGroup>

添加對 GB2312 編碼的支持

這是一個中文編程環境下繞不過的問題,很納悶為什么微軟沒有將其內置。

.NET 6.0 中默認不支持 GB2312、GBK編碼。要啟用支持需要通過 NuGet 引入 System.Text.Encoding.CodePages ,地址在這里:https://www.nuget.org/packages/System.Text.Encoding.CodePages 。然后在 App 的 OnStartup 方法中調用方法(路遙工具箱是使用 WPF 開發的,并使用了 Prism 框架):

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

UTF8 和 UTF8-without-BOM

UTF-8 不需要 BOM,盡管 Unicode 標準允許在 UTF-8 中使用 BOM。所以不含 BOM 的 UTF-8 才是標準形式,在 UTF-8 文件中放置 BOM 主要是微軟的習慣(順便提一下:把帶有 BOM 的小端序 UTF-16 稱作「Unicode」而又不詳細說明,這也是微軟的習慣)。BOM(byte order mark)是為 UTF-16 和 UTF-32 準備的,用于標記字節序(byte order)。微軟在 UTF-8 中使用 BOM 是因為這樣可以把 UTF-8 和 ASCII 等編碼明確區分開,但這樣的文件在 Windows 之外的操作系統里會帶來問題。

作者:梁海
鏈接:https://www.zhihu.com/question/20167122/answer/14194448
來源:知乎

在 .NET 6.0 中,如果使用默認的 UTF-8 編碼去寫文件則該文件默認是帶 BOM 的。因為路遙工具箱的升級接口部署在 Linux 服務器上,所以使用 .NET 6.0 上傳的 XML 文件在瀏覽時會報錯。

寫文件的代碼類似這樣:

var str = Serialize(updatePackage); File.WriteAllText(path, str, Encoding.UTF8);

報錯信息:

XML declaration allowed only at the start of the document

解決辦法就是采用無 BOM 的 UTF-8 編碼,以上代碼修改一下即可:

var str = Serialize(updatePackage); File.WriteAllText(xml, fn, new UTF8Encoding(false));

同時兼容 x86 和 x64 的打包發布

在 .NET 6.0 中,程序的入口 exe 變成了本地化代碼。這也就代表著類似 .NET Framework 下那種一個 exe 可以同時適應 x86、x64 的神器操作沒有了。

為了能更高效率的發揮路遙工具箱的性能,同時也兼顧目前仍在使用 x86 系統的用戶,路遙工具箱采用了 x64 為主且附帶 x86 支持的發布形式。

通過 Visual Studio 內置的發布功能將路遙工具箱使用 windows-x86 發布一次,即可得到一個 32 位的入口程序 exe 文件。將該文件改名為 Luyao.Toolkit-x86.exe 后復制到項目中,并設置為“始終復制”。這樣每次生成新的 release 版本都是 64 位的并且攜帶了 32 位的啟動器。

總結

以上是生活随笔為你收集整理的路遥工具箱全面迁移至 .NET 6.0 并发布 3.0 版本及迁移记录详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。