25
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

今年もついに.NET 10がリリースされました。2年に1回のLTSのリリースです。
ということは、LTSリリースごとにおこなわれているプリザンターのターゲットフレームワークの変更がおこなわれるタイミングになります。
せっかくなので2025/11/24時点での最新版の1.4.22.0を.NET 10に移行させて動くかどうかを見てみます。

既存環境を動かしてみる

ターゲットフレームワークの変更

まずはターゲットフレームワークを変更します。プロジェクトファイルの定義を置換してしまえばOKです。

-    <TargetFramework>net8.0</TargetFramework>
+    <TargetFramework>net10.0</TargetFramework>

置換対象は13箇所になります。

global.jsonの編集

Visual Studioでのビルド制約の都合でglobal.jsonを設定してあるので、これも書き換えが必要です。

{
    "sdk": {
-        "version": "8.0.100",
+        "version": "10.0.100",
        "allowPrerelease": false,
        "rollForward": "latestFeature"
    }
}

とりあえずビルドしてみる

ここまで来れば一通りの準備はOKなので、一度ビルドしてみます。

12:43 で再構築が開始されました...
D:\repos\Implem.Pleasanter\Implem.Plugins\Implem.Plugins.csproj を復元しました (3 ミリ秒)。
D:\repos\Implem.Pleasanter\Rds\Implem.IRds\Implem.IRds.csproj を復元しました (3 ミリ秒)。
D:\repos\Implem.Pleasanter\Implem.DisplayAccessor\Implem.DisplayAccessor.csproj を復元しました (2 ミリ秒)。
D:\repos\Implem.Pleasanter\Implem.ParameterAccessor\Implem.ParameterAccessor.csproj を復元しました (14 ミリ秒)。
D:\repos\Implem.Pleasanter\Implem.Libraries\Implem.Libraries.csproj を復元しました (15 ミリ秒)。
D:\repos\Implem.Pleasanter\Implem.DefinitionAccessor\Implem.DefinitionAccessor.csproj を復元しました (15 ミリ秒)。
D:\repos\Implem.Pleasanter\Rds\Implem.MySql\Implem.MySql.csproj を復元しました (15 ミリ秒)。
D:\repos\Implem.Pleasanter\Rds\Implem.SqlServer\Implem.SqlServer.csproj を復元しました (15 ミリ秒)。
D:\repos\Implem.Pleasanter\Rds\Implem.PostgreSql\Implem.PostgreSql.csproj を復元しました (15 ミリ秒)。
D:\repos\Implem.Pleasanter\Implem.CodeDefiner\Implem.CodeDefiner.csproj を復元しました (16 ミリ秒)。
D:\repos\Implem.Pleasanter\Implem.Factory\Implem.Factory.csproj を復元しました (16 ミリ秒)。
D:\repos\Implem.Pleasanter\Implem.Pleasanter\Implem.Pleasanter.csproj を復元しました (62 ミリ秒)。
1>------ すべてのリビルド開始: プロジェクト:Implem.Plugins, 構成: Debug Any CPU ------
2>------ すべてのリビルド開始: プロジェクト:Implem.IRds, 構成: Debug Any CPU ------
3>------ すべてのリビルド開始: プロジェクト:Implem.DisplayAccessor, 構成: Debug Any CPU ------
D:\repos\Implem.Pleasanter\Implem.TestAutomation\Implem.TestAutomation.csproj を復元しました (68 ミリ秒)。
1>  Implem.Plugins -> D:\repos\Implem.Pleasanter\Implem.Plugins\bin\Debug\net10.0\Implem.Plugins.dll
2>  Implem.IRds -> D:\repos\Implem.Pleasanter\Rds\Implem.IRds\bin\Debug\net10.0\Implem.IRds.dll
3>  Implem.DisplayAccessor -> D:\repos\Implem.Pleasanter\Implem.DisplayAccessor\bin\Debug\net10.0\Implem.DisplayAccessor.dll
4>------ すべてのリビルド開始: プロジェクト:Implem.ParameterAccessor, 構成: Debug Any CPU ------
4>  Implem.ParameterAccessor -> D:\repos\Implem.Pleasanter\Implem.ParameterAccessor\bin\Debug\net10.0\Implem.ParameterAccessor.dll
5>------ すべてのリビルド開始: プロジェクト:Implem.Libraries, 構成: Debug Any CPU ------
5>D:\repos\Implem.Pleasanter\Implem.Libraries\Implem.Libraries.csproj : warning NU1510: PackageReference System.IO.FileSystem.Primitives は取り除かれません。このパッケージは不要である可能性があるため、依存関係から削除することを検討してください。
5>D:\repos\Implem.Pleasanter\Implem.Libraries\Utilities\Files.cs(36,21,36,50): warning CA2022: 'System.IO.FileStream.Read(byte[], int, int)' による不正確な読み取りを避ける (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2022)
5>  Implem.Libraries -> D:\repos\Implem.Pleasanter\Implem.Libraries\bin\Debug\net10.0\Implem.Libraries.dll
6>------ すべてのリビルド開始: プロジェクト:Implem.MySql, 構成: Debug Any CPU ------
7>------ すべてのリビルド開始: プロジェクト:Implem.PostgreSql, 構成: Debug Any CPU ------
8>------ すべてのリビルド開始: プロジェクト:Implem.SqlServer, 構成: Debug Any CPU ------
9>------ すべてのリビルド開始: プロジェクト:Implem.DefinitionAccessor, 構成: Debug Any CPU ------
8>  Implem.SqlServer -> D:\repos\Implem.Pleasanter\Rds\Implem.SqlServer\bin\Debug\net10.0\Implem.SqlServer.dll
7>  Implem.PostgreSql -> D:\repos\Implem.Pleasanter\Rds\Implem.PostgreSql\bin\Debug\net10.0\Implem.PostgreSql.dll
6>  Implem.MySql -> D:\repos\Implem.Pleasanter\Rds\Implem.MySql\bin\Debug\net10.0\Implem.MySql.dll
10>------ すべてのリビルド開始: プロジェクト:Implem.Factory, 構成: Debug Any CPU ------
10>  Implem.Factory -> D:\repos\Implem.Pleasanter\Implem.Factory\bin\Debug\net10.0\Implem.Factory.dll
9>  Implem.DefinitionAccessor -> D:\repos\Implem.Pleasanter\Implem.DefinitionAccessor\bin\Debug\net10.0\Implem.DefinitionAccessor.dll
11>------ すべてのリビルド開始: プロジェクト:Implem.Pleasanter, 構成: Debug Any CPU ------
12>------ すべてのリビルド開始: プロジェクト:Implem.CodeDefiner, 構成: Debug Any CPU ------
12>D:\repos\Implem.Pleasanter\Implem.Libraries\Implem.Libraries.csproj : warning NU1510: PackageReference System.IO.FileSystem.Primitives は取り除かれません。このパッケージは不要である可能性があるため、依存関係から削除することを検討してください。
12>  Implem.CodeDefiner -> D:\repos\Implem.Pleasanter\Implem.CodeDefiner\bin\Debug\net10.0\Implem.CodeDefiner.dll
11>D:\repos\Implem.Pleasanter\Implem.Pleasanter\Implem.Pleasanter.csproj : warning NU1510: PackageReference System.Text.Json は取り除かれません。このパッケージは不要である可能性があるため、依存関係から削除することを検討してください。
11>D:\repos\Implem.Pleasanter\Implem.Pleasanter\Implem.Pleasanter.csproj : warning NU1510: PackageReference System.Text.RegularExpressions は取り除かれません。このパッケージは不要である可能性があるため、依存関係から削除することを検討してください。
11>D:\repos\Implem.Pleasanter\Implem.Pleasanter\Implem.Pleasanter.csproj : warning NU1510: PackageReference System.Net.Http は取り除かれません。このパッケージは不要である可能性があるため、依存関係から削除することを検討してください。
11>D:\repos\Implem.Pleasanter\Implem.Pleasanter\Implem.Pleasanter.csproj : warning NU1510: PackageReference Microsoft.Extensions.Diagnostics.HealthChecks は取り除かれません。このパッケージは不要である可能性があるため、依存関係から削除することを検討してください。
11>D:\repos\Implem.Pleasanter\Implem.Pleasanter\Libraries\Manifests\ManifestLoader.cs(12,32,12,33): warning CS8632: '#nullable' 注釈コンテキスト内のコードでのみ、Null 許容参照型の注釈を使用する必要があります。
11>D:\repos\Implem.Pleasanter\Implem.Pleasanter\Libraries\Initializers\NotificationInitializer.cs(10,13,10,32): warning SYSLIB0014: 'ServicePointManager' は旧形式です ('WebRequest, HttpWebRequest, ServicePoint, and WebClient are obsolete. Use HttpClient instead. Settings on ServicePointManager no longer affect SslStream or HttpClient.') (https://aka.ms/dotnet-warnings/SYSLIB0014)
11>D:\repos\Implem.Pleasanter\Implem.Pleasanter\Libraries\Initializers\NotificationInitializer.cs(12,23,12,42): warning SYSLIB0014: 'ServicePointManager' は旧形式です ('WebRequest, HttpWebRequest, ServicePoint, and WebClient are obsolete. Use HttpClient instead. Settings on ServicePointManager no longer affect SslStream or HttpClient.') (https://aka.ms/dotnet-warnings/SYSLIB0014)
11>D:\repos\Implem.Pleasanter\Implem.Pleasanter\Libraries\DataTypes\Comments.cs(345,39,345,40): warning CS8632: '#nullable' 注釈コンテキスト内のコードでのみ、Null 許容参照型の注釈を使用する必要があります。
11>D:\repos\Implem.Pleasanter\Implem.Pleasanter\Libraries\Manifests\ManifestLoader.cs(32,29,32,30): warning CS8632: '#nullable' 注釈コンテキスト内のコードでのみ、Null 許容参照型の注釈を使用する必要があります。
11>D:\repos\Implem.Pleasanter\Implem.Pleasanter\Models\Extensions\ExtensionModel.cs(576,17,576,38): warning CS0472: 型 'bool' の値が型 'bool?' の 'null' に等しくなることはないので、式の結果は常に 'true' になります
11>  Implem.Pleasanter -> D:\repos\Implem.Pleasanter\Implem.Pleasanter\bin\Debug\net10.0\Implem.Pleasanter.dll
11>
11>  > wwwroot@1.4.22.0 build
11>  > tsc && vite build
11>
11>  [36mvite v7.1.12 [32mbuilding for production...[36m[39m
11>  transforming...
11>
11>  ../images/ui-icons_ffffff_256x240.png referenced in ../images/ui-icons_ffffff_256x240.png didn't resolve at build time, it will remain unchanged to be resolved at runtime
11>
11>  ../images/ui-icons_3d3d3d_256x240.png referenced in ../images/ui-icons_3d3d3d_256x240.png didn't resolve at build time, it will remain unchanged to be resolved at runtime
11>  [32m笨・[39m 254 modules transformed.
11>  rendering chunks...
11>  computing gzip size...
11>  [32mcopied:[39m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[32mmanifest.json                  [39m[1m[2m    3.95 kB[22m[1m[22m[2m 笏・gzip:   0.57 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[35mcss/legacy-responsive.min.css  [39m[1m[2m   48.67 kB[22m[1m[22m[2m 笏・gzip:   7.87 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[35mcss/style-responsive.min.css   [39m[1m[2m   63.64 kB[22m[1m[22m[2m 笏・gzip:   9.92 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[35mcss/legacy.min.css             [39m[1m[2m  104.83 kB[22m[1m[22m[2m 笏・gzip:  31.45 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[35mcss/style.min.css              [39m[1m[2m  196.92 kB[22m[1m[22m[2m 笏・gzip:  45.01 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[36mjs/vendor_De7fCWPb.js          [39m[1m[2m    0.28 kB[22m[1m[22m[2m 笏・gzip:   0.20 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[36mjs/vendor_CvBJ-pda.js          [39m[1m[2m    0.61 kB[22m[1m[22m[2m 笏・gzip:   0.41 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[36mjs/vendor_ClSbYUoe.js          [39m[1m[2m    0.75 kB[22m[1m[22m[2m 笏・gzip:   0.47 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[36mjs/vendor_CG5_MsGZ.js          [39m[1m[2m    1.43 kB[22m[1m[22m[2m 笏・gzip:   0.74 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[36mjs/vendor_BJjg6pgD.js          [39m[1m[2m    1.93 kB[22m[1m[22m[2m 笏・gzip:   0.85 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[36mjs/vendor_Cn9R7F4g.js          [39m[1m[2m    2.38 kB[22m[1m[22m[2m 笏・gzip:   1.14 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[36mjs/vendor_DkgCTOVJ.js          [39m[1m[2m    5.26 kB[22m[1m[22m[2m 笏・gzip:   2.09 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[36mjs/vendor_CGRFS8ig.js          [39m[1m[2m    7.61 kB[22m[1m[22m[2m 笏・gzip:   3.19 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[36mjs/modules_CuxZaIK8.js         [39m[1m[2m   29.09 kB[22m[1m[22m[2m 笏・gzip:   8.78 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[36mjs/app_CeNaw5Gn.js             [39m[1m[2m  249.38 kB[22m[1m[22m[2m 笏・gzip:  70.08 kB[22m
11>  [2m../../Implem.Pleasanter/wwwroot/assets/[22m[36mjs/vendor_BoX_3wK4.js          [39m[1m[33m1,351.82 kB[39m[22m[2m 笏・gzip: 415.41 kB[22m
11>  [33m
11>  (!) Some chunks are larger than 500 kB after minification. Consider:
11>  - Using dynamic import() to code-split the application
11>  - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
11>  - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.[39m
11>  [32m  [1m./src/clone/assets[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets[22m[39m
11>  [32m  [1m./src/plugins/d3.min.js[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\d3.min.js[22m[39m
11>  [32m  [1m./src/plugins/flatpickr[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\flatpickr[22m[39m
11>  [32m  [1m./src/plugins/fullcalendar[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\fullcalendar[22m[39m
11>  [32m  [1m./src/plugins/gridstack.js[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\gridstack.js[22m[39m
11>  [32m  [1m./src/plugins/hogan-3.0.2.min.js[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\hogan-3.0.2.min.js[22m[39m
11>  [32m  [1m./src/plugins/jquery-3.6.0.min.js[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\jquery-3.6.0.min.js[22m[39m
11>  [32m  [1m./src/plugins/jquery-file-upload[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\jquery-file-upload[22m[39m
11>  [32m  [1m./src/plugins/jquery-ui.min.js[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\jquery-ui.min.js[22m[39m
11>  [32m  [1m./src/plugins/jquery.datetimepicker[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\jquery.datetimepicker[22m[39m
11>  [32m  [1m./src/plugins/jquery.multiselect[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\jquery.multiselect[22m[39m
11>  [32m  [1m./src/plugins/jquery.validate.min.js[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\jquery.validate.min.js[22m[39m
11>  [32m  [1m./src/plugins/lightbox[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\lightbox[22m[39m
11>  [32m  [1m./src/plugins/marked.min.js[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\marked.min.js[22m[39m
11>  [32m  [1m./src/plugins/material-symbols[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\material-symbols[22m[39m
11>  [32m  [1m./src/plugins/md5.js[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\md5.js[22m[39m
11>  [32m  [1m./src/plugins/moment.min.js[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\moment.min.js[22m[39m
11>  [32m  [1m./src/plugins/normalize.css[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\normalize.css[22m[39m
11>  [32m  [1m./src/plugins/qrcode.min.js[22m 竊・[1m..\..\Implem.Pleasanter\wwwroot\assets\plugins\qrcode.min.js[22m[39m
11>  [32m笨・built in 5.12s[39m
13>------ [すべてリビルド] のスキップ: プロジェクト:docker-compose, 構成: Debug Any CPU ------
13>プロジェクトはこのソリューション構成に対してビルドするように選択されていません。 
14>------ すべてのリビルド開始: プロジェクト:Implem.TestAutomation, 構成: Debug Any CPU ------
14>D:\repos\Implem.Pleasanter\Implem.TestAutomation\Implem.TestAutomation.csproj : warning NU1510: PackageReference System.Text.Json は取り除かれません。このパッケージは不要である可能性があるため、依存関係から削除することを検討してください。
14>D:\repos\Implem.Pleasanter\Implem.TestAutomation\Implem.TestAutomation.csproj : warning NU1510: PackageReference System.Text.RegularExpressions は取り除かれません。このパッケージは不要である可能性があるため、依存関係から削除することを検討してください。
14>D:\repos\Implem.Pleasanter\Implem.TestAutomation\Implem.TestAutomation.csproj : warning NU1510: PackageReference System.Net.Http は取り除かれません。このパッケージは不要である可能性があるため、依存関係から削除することを検討してください。
14>  Implem.TestAutomation -> D:\repos\Implem.Pleasanter\Implem.TestAutomation\bin\Debug\net10.0\Implem.TestAutomation.dll
14>  destinationfiles: D:\repos\Implem.Pleasanter\Implem.TestAutomation\bin\Debug\net10.0\msedgedriver.exe
========== すべて再構築: 13 正常終了、0 失敗、1 スキップ ==========
=========== リビルド は 12:44 で完了し、40.795 秒 掛かりました ==========

ちょいちょい旧形式の部分であったり参照が不要であったりnull許容型の扱いがおかしなところがあったりするみたいですが、これは.NET 8の時でもそのまま出ていたものなので、無視してOKです。
正常にビルドが通ったので、バイナリ自体は生成されています。

では実際に動かしてみる

Visual Studioでビルドして動かしてみます。
image.png
お、ログイン画面まで無事到達しましたね。では、ログインしてみます。
image.png
無事にログイン画面に到達できました。ここまで来れば問題無しですね。

.NET8→10での変更点に確認する

.NET8→10に移行させたので破壊的変更な部分を踏み抜いていないかのチェックをします。
破壊的な変更については毎回マイクロソフトがまとめてくれてる記事があるので、それを参考にします。
毎度のことですが、リリースされてしまっているにもかかわらず情報が全部揃っていないと注釈が入っているので、それには注意が必要です。半年ぐらいは更新が続くので、注意して追いかけてください。
ビルドして動いているので、ソースの互換性部分は問題無いものと見なして、それ以外のところを見ていきます。

ASP.NET Core

  • IActionContextAccessor と ActionContextAccessor は廃止されました
    • ともに未使用なので問題なし
  • 既知の API エンドポイントで無効になっている Cookie ログイン リダイレクト
    • リダイレクトから401/403応答への変更。変更対象はApiControllerなので、むしろ望ましい変更。影響なし。
  • TryHandleAsync が true を返すと、例外診断が抑制される
    • 問題なし

Containers

  • 既定の .NET イメージで Ubuntu を使用する
    • ディストリがDebianからUbuntuに変更されたもの。Ubuntuでも問題ないので、変更による影響はほぼなし。

Core .NET ライブラリ

  • FilePatternMatch.Stem が null 非許容に変更されました
    • FilePatternMatchは未使用なので問題なし
  • InlineArray で許可されていない明示的な構造体サイズ
    • InlineArrayは未使用なので問題なし
  • ActivitySource.CreateActivity と ActivitySource.StartActivity の動作変更
    • ActivitySourceは未使用なので問題なし
  • BufferedStream.WriteByte が暗黙的フラッシュを実行しなくなりました
    • BufferedStreamは未使用なので問題なし
  • スパンパラメーターを使用した C# 14 のオーバーロード解決
    • Spanの使用可能範囲が拡張されたものなので問題なし
  • 一般数学における一貫したシフト動作
    • シフトを使用しているところはパーミッションマスクの部分であるが、影響範囲の出来るような使用方法ではないので問題なし
  • W3C 標準に更新された既定のトレース コンテキスト 伝達子
    • 未使用なので問題なし
  • DriveInfo.DriveFormat は Linux ファイルシステムの種類を返します
    • DriveInfoは未使用なので問題なし
  • GnuTarEntry と PaxTarEntry に既定では atime と ctime が含まれなくなりました
    • GnuTarEntry、PaxTarEntryともに未使用なので問題なし
  • LDAP DirectoryControl の解析がより厳格に
    • LDAPサーバを使用してのSSOを使用している場合は影響が出る可能性がある。手持ちの環境では問題は発生しなかったが環境固有の実装によっては影響が出る可能性があるので要調査。
  • MacCatalyst バージョンの正規化
    • MacCatalystは未使用なので問題なし
  • .NET ランタイムで既定の終了シグナル ハンドラーが提供されなくなりました
    • AppDomain.ProcessExit、AssemblyLoadContext.Unloadingを使用したイベントハンドリングは実装されていないので問題なし
  • Type.MakeGenericSignatureType 引数の検証
    • 未使用なので問題なし

Cryptography

  • CompositeMLDsa が draft-08 に更新されました
    • 未使用なので問題なし
  • openSSL 暗号化プリミティブは macOS ではサポートされていません
    • macOSは公式な動作環境としてサポートされていないので問題なし
  • Unix で必要な OpenSSL 1.1.1 以降
    • 実行環境を要確認。ほとんどのケースでは問題無いはず。
  • X500DistinguishedName の検証がより厳密に
    • X500DistinguishedNameは未使用なので問題なし
  • 環境変数の名前が DOTNET_OPENSSL_VERSION_OVERRIDE に変更されました
    • CLR_OPENSSL_VERSION_OVERRIDEは未使用なので問題なし

Entity Framework Core

未使用なので省略

Extensions

  • トリミング時の安全性が保証されない Microsoft.Extensions.Configuration コードから DynamicallyAccessedMembers 注釈が削除されました
    • Microsoft.Extensions名前空間のものは使用していないので問題なし
  • BackgroundService は、すべての ExecuteAsync をタスクとして実行します
    • プリザンターでもBackgroundServiceは存在しているが内部ではQuartz.NETを使用しているので.NET10依存ではなくライブラリ依存
  • AnyKey を使用した GetKeyedService() と GetKeyedServices() の問題を修正する
    • GetKeyedService()、GetKeyedServices()、KeyedService.AnyKeyはいずれも未使用なので問題なし
  • 構成で保持される NULL 値
    • 構成ファイルを設定の抱き込みで使用していないので問題なし
  • コンソールログ出力でメッセージが重複しなくなりました
    • 問題なし

Globalization

  • 環境変数の名前が DOTNET_ICU_VERSION_OVERRIDE に変更
    • CLR_ICU_VERSION_OVERRIDEは未使用なので問題なし

Interop

未使用なので省略

SDK と MSBuild

内部コードと直接絡んで来るところではないので省略

Windows Presentation Foundation (WPF)

未使用なので省略

Windows フォーム

未使用なので省略

シリアル化

  • System.Text.Json はプロパティ名の競合をチェックします
    • 検証タイミングの変更のみなので問題なし
    • シリアライザはNewtonsoft.Jsonを使用している
  • XmlSerializer が ObsoleteAttribute でマークされたプロパティを無視しなくなりました
    • XMLのシリアライザを使用しているところがないので問題なし

ツールをインストールする

内部コードと直接絡んで来るところではないので省略

ネットワーク

  • ブラウザーの HTTP クライアントで既定で有効になっているストリーミング HTTP 応答
    • ReadAsStreamAsyncを使用しているところはないので問題なし
  • Uri 長さの制限が削除されました
    • 条件緩和の方向なので問題なし

まとめ

2年ぶりのLTSリリースということで、プリザンターのターゲットフレームワークを.NET 10に変更して動かしてみました。今のところは何も問題無く動くようです。
インプリムさんから正式なリリース情報はまだ出ていませんが、例年通りなら年明けから年度替わりまでにはリリースされるものと思われます。
コード部分も新機能が大分増えているので、本体コードのコーディング作業もかなり快適になりそうです。

25
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?