Skip to content

OTR_VersionUpgrade

nishi_74322014 edited this page Oct 28, 2026 · 2 revisions

バージョンアップの進め方

概要

フレームワークは、アプリケーションのライフサイクルの間、継続的にバージョンアップさせていく必要がある。
本ページは、Open 棟梁を使ったアプリケーションで、次の 2 つを行う方法を整理する。

  • Open 棟梁のバージョンアップ:新しいリリースのライブラリ・テンプレートを取り込む。
  • targetFramework のバージョンアップ:アプリケーションの .NET のバージョンを上げる(net48 → net10.0 を含む)。

詳細

進め方

  1. 机上で影響を調べる。 リリース情報の「後方互換性に影響する変更」と、詳細なリリース情報を読む。
  2. バージョンアップ(とマイグレーション)を行う。
  3. テストに問題が無ければリリースする。

Open 棟梁は、基本的に後方互換性を維持しているので、アプリケーションへの影響は小さい。

  • バージョンアップの影響は、テンプレート(サンプル)のタグ間の差分を取れば、ある程度は分かる。
  • Web Forms や Windows Forms で開発した .NET Framework 版の B 層・D 層は、.NET(Core)版にほぼそのまま載せられた。

Open 棟梁のバージョンアップ

ライブラリ

時期 方法
02-00 以前 root\programs\C#\Frameworks 以下のライブラリを、最新のものに差し替える
02-10 〜 03-00 NuGet パッケージを更新する(テンプレートは NuGet 参照)
03-10 以降 テンプレート(OpenTouryoTemplates)が終了したため、本体リポジトリのサンプルを基に取り込む。ライブラリは NuGet パッケージ(net48 / net10.0)でも、ソースからのビルドでもよい

テンプレート側

  • 必要に応じて、テンプレート(サンプル)側の修正を取り込む。
  • 取り込みが難しい場合は、最新のテンプレートに、既存の P / B / D 層のロジックを載せ替える方が楽なことがある。

targetFramework のバージョンアップ

.NET Framework 版

  1. 新しい Visual Studio でソリューション・ファイル(*.sln)を開く(アップグレード・ウィザードが起動することがある)。
  2. プロジェクトのプロパティで、targetFramework を新しいバージョンに変える。
    app.config・web.config・packages.config にも変更が入るので、*.csproj の直接の書き換えより、プロパティ画面を使う方が安全である。
    変更漏れは、targetFramework を Grep して確かめる。
  3. web.config の compilation と httpRuntime の targetFramework を変える。
  4. 全てのソリューションをビルドし、ワーニング(後方互換の打ち切りの予告)とエラー(API の削除)に対応する。
  5. ASP.NET では、配置先のアプリケーション・プールの .NET のバージョンが変わることがある。

.NET(Core)版

プロジェクト・ファイル(SDK 形式)・パッケージ管理・ビルド・システムが整理され、.NET Framework 版より大分簡単になった。

  • *.csproj の TargetFramework を変え、NuGet の参照を新しいランタイムに合わせて上げる。
  • Open 棟梁自身は、net8.0 → net10.0 の移行を 03-20 で行った(.NET 10 のワーニングとエラーへの対応のみ)。

net48 から .NET(Core)へ

  • B 層・D 層は、ほぼそのまま載る。P 層は載せ替えになる(Web Forms は .NET にない。MVC は ASP.NET Core MVC へ)。
  • BinaryFormatter(BinarySerialize)は .NET 9 で削除されたため、net10.0 側では使えない(03-10・03-20 で関連機能を整理した)。
  • 設定は app.config / web.config から appsettings.json へ移る(外部パラメタ(構成)、.NET版の初期化処理)。

注意点

  • サードパーティ製品の後継の有無と、インターフェイスの変更が、工数の増加に繋がることがある。
  • Open 棟梁のバージョンアップをしない場合は、単純に新しい機能が使えないだけである。

コーディング・エージェントに任せる場合

バージョンアップは、エージェントに向いた作業である(差分の調査と機械的な置き換えが多い)。

  • 先に、タグ間の差分から影響を洗い出させる。 詳細なリリース情報の「後方互換性に影響する変更」を入力にする。
  • 置き換えは、シグネチャの変更・名前空間の変更・既定値の変更の 3 種に分けて行わせる。
    既定値の変更(例:SAML2 の署名の既定 SHA1 → SHA256)は、コンパイルが通っても振る舞いが変わる。
  • 検証は、リポジトリの 1_BuildAll.ps1 → 2_RunAllTests.ps1 → 3_SmokeTest.ps1 と同じ型を、アプリケーション側にも用意しておくとよい。
  • 移行のプロンプトは、OpenTouryoCodingAgentAssets の src/docs/prompt を参照。

参考


Tags: 再構築

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki
開発基盤部会 Wiki

移行管理: DONE / TODO

Clone this wiki locally