「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
部会開催メモ
詳細(2025年 †
4-6月 セルフ&オフライン部会(第42-44回) †
準備 †
Open棟梁をVS2022新環境でビルドして、移行・マイグレーションの評価を行い計画を策定
- 久々、ビルド・バッチを実行、インストールされない4.5を除き、ほぼビルドはできた。
- フォルダはrootじゃなくても良い。developブランチ → migrationブランチで作業
- 全ソリューションのビルドを確認後にポーティング作業を実施しつつ、必要に応じてOSSバージョンアップ移行を行う。
計画 †
- ターゲット・フレームワーク
.NET Fx 4.5 - 4.7系、.NET Core 2 - 6系をドロップし、.NET 8に新規対応させる。
- .NET Fx 4.5はサポート終了済み、4.6は、2027/1/12まで。4.7は作業工数的な意味で。
- .NET Core 2 - 6は、サポート終了済み、.NET 8 は、2026/11/10まで。.NET 10は、2025/11頃にリリース予定。
- .NET Standard2.1は、.NET Core 3.0 以降が対象で非推奨の流れなので.NET Core(.NET 8)に移行。
- .NET Standard2.0は、残しておく意味が希薄になったのでドロップ(XPFがあれば別だが)。
- プリプロセッサ ディレクティブの変更("NETSTD" → "(NETSTD || NETCOREAPP)")
- .NET 6(LTS)は対応済み、.NET 7、9はSTSなので.NET 8(LTS) に新規対応。
- NuGet?
- 旧devenvのドロップにより packages.config を廃止し PackageReference? に移行。
- NuGet?パッケージを新パッケージに更新、ターゲットフレームワーク毎にサポート状況が異なる。
- データプロバイダ
サポート状況がまちまちなので最新化(.NET Fx 4.8、.NET 8)せざるを得ない。
- SqlClient?は、System.Data.SqlClient? → Microsoft.Data.SqlClient?(足切り早い)
- DamManagedOdp? に完全移行(.NET Standardをドロップし.NET 8へ)するので DamOraOdp? を完全削除
- Npgsqlはver9以降、.NET 6 以上のサポートに変更(Standard2.0 & 2.1での対応不可)。
- その他
- Sharpromptが.NET Fxのサポート終了、Simple_CLIをドロップ
- 序にOSS系の更新(jQuery、Bootstrap、log4net → NLog)
- Web系対応
下記のために新規作成Webサイトのテンプレを使って再構築を予定
- .NET Fxの系は、PackageReference?に対応しておらず、NuGet?更新の難易度が高い。
- .NET Core系は、Gruntなどのタスクランナーが下火になってテンプレから除外。
- jQuery、Bootstrapのベターユースがよく解らないのでテンプレ準拠にする。
- Core系のBinarySerialize?の完全廃止対応
- Core系の通信制御機能の全ドロップ(インプロセス呼び出しを除く)
- DeployZipPackWithHTTPCore(設定のセーブ/ロードのみだが工数マターでのドロップ)
- NuGet?、テンプレート・リポジトリ
.NET、VSバージョン数が減り、NuGet?のデメリット顕在化で必要性が薄れたため。
- 通信制御のHTTPサポート
WebAPI一択に(TCPサポートのWCFは残す)
- ASP.NET Webサービスのサポート
- 通信制御のWCFのHTTPバインディングのサポート
実施 †
- リマインド
- Business以下は一度NuGet?解除して、リリース前に再NuGet?化する。
- セッション状態サーバー起動は以前のバージョンからbatを取り出すと良い。
- Core系RichClient?のTarget:netx.x-windowsx.x(8.0, 7.0)
- TargetFramework?
- Project出力(HintPath?, DocumentationFile?)
- Err.MSG:Add a reference to ".NETFramework,Version=v4.8" in the "TargetFrameworks?" property of your project file and then re-run NuGet? restore.
- NuGet?リストアは、ソリューションのNuGet?パッケージの復元から行うが、解決しない事がある。
- その場合は、packages / obj / binフォルダを削除する(Fx系とCore系のクロスコンパイルで発生)。
- .NET Fx
- (アレば)NuGet?更新
- 競合発生時はAssemblyBindingRedirect?を設定
- .NET Core
- TargetFramework?変更、参照設定の変更、NuGet?更新
- System.Data.SqlClient? → Microsoft.Data.SqlClient?
- 競合発生時はAssemblyBindingRedirect?ではなくNuGet?で上書き
- WindowsBase?競合は、UseWindowsForms?、UseWPFの両方をチェック
(ライブラリが両方参照しているので、片方だけだと警告が出てしまう)
- Web系(.NET Fx)
非Web系(.NET Fx)と重複した分を除く
- テンプレート差し替え
.NET Fx 4.8のWebアプリケーションが、NuGet?更新だけでは対応できなくなってきているのでのテンプレートを差し替え
- .NET Fx 4.8のWebアプリケーションを新規作成、WebForms?やMVCを構成する。
- 載せ替えを、デバック実行を行いながら行って全体をマイグレーションして行く。
- Global.asax、BundleConfig?.csに変更点が(相対的に)多い(と言えば多い)。
- 最後に足りない参照設定(DLL、NuGet?)を足していく。
- NuGet?更新
- bootstrap:5.2.3 → 5.3.6
- DotNetCompilerPlatform?:2.0.1 → 4.1.0
- Microsoft.CodeDom?.Providers.DotNetCompilerPlatform?を削除
- NuGet?更新前に「bin\roslyn\csc.exe が見つかりませんでした」が発生。
- NuGet?更新後に「認識されない要素 'system.codedom' です。」が発生。
- DotNetCompilerPlatform?を削除することでエラー発生しなくなった。
- (昔の環境を取り置く場合以外、不要である場合がほとんどらしい)
- Err.MSG:'jquery' は無効なスクリプト名です。名前は '.js' で終わる必要があります。
- NuGet?で「AspNet?.ScriptManager?.jQuery」をインストールする必要がある(新規作成のテンプレートでも必要)。
- 'jquery' → 'bootstrap'、'respond'については、<asp:ScriptReference? Name="bootstrap" />、<asp:ScriptReference? Name="respond" />を削除する。
- デザインが崩れている所を発見して修正を加えていく。
- menu-contentn の classを削除
- .nav-side-menu を position: relative; にしないと、位置移動しない。
- body, html, .menu-list を height: 100%; にしないと縮んで表示される。
- MVCのAjax.BeginForm?が適切に動作しない件
- Microsoft.jQuery.Unobtrusive.Ajaxのインストールが必要。
- MVCのBundleConfig?.csで、jquery.unobtrusive-ajaxを追加(復元)。
- Web系(.NET Core)
非Web系(.NET Core)と重複した分を除く
- テンプレート差し替え
Gruntは引き続き利用可能そうだが、TaskRunnerExplorer?がdisconになっている等、NuGet?が楽そうなので、
最新動向を取り込む意味でも新規作成したテンプレートに載せ替えた方が良さそうだと判断した結果。
- Program.Main スタイル プログラムに変換
- AddNewtonsoftJson?をひとまずコメントアウト。
- null 許容注釈コンテキスト(Nullable)を無効(disable)に設定
- 本丸は、_Layout.cshtml(gruntfile.jsのbundle、uglifyの削除に対応)
- <environment include/exclude="Development">を削除(標準で入ってない)
- NuGet?追加(初期状態ではなにも追加されていないので適宜、追加する)
- デザインが崩れている所を発見して修正を加えていく。
- その他
- 暗号化系も、なかなか厳しい状況(SYSLIB0045)。
- .NET Fxの、System.Data.SqlClient? → Microsoft.Data.SqlClient?
結果 †
- .NET 8で、BinarySerialize?が完全廃止になった。
- 従って、.NET Coreの通信制御はインプロセスのみ。
- 関連して、幾つかのプロジェクトのドロップを行った。
- いくらか、.NET Fx側のサポート終了OSSが観測された。
- 細かい変更点
- サクラエディタのUTF-8グレップ:-GCODE=4を付与
- Security.Cryptography.EccKey? → Jose.keys.EccKey?
- ビルドシステム・エンハンス(nuget.exe最新化、Tempファイル削除集約)
- その他、前バージョンのビルドシステムの潜在不良の様なモノへの対応
参考 †