1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[ODC]External Logicの.NETを6から8に上げる手順を読む

Last updated at Posted at 2024-10-27

ODCでC#を利用する仕組みである、External Logicはリリース当初は.NET 6を対象としていた。
しかし、.NET 6のサポートが終了してしまうため、.NET 8にアップデートが必要。
その手順がドキュメントとして公開されていたので、関連情報と合わせて読んでいく。

環境情報

ODC Studio (Version 1.4.28)

手順は、MacBook Air M2 2022上のVSCodeで確認。
(NuGet Package ManagerはC# Dev KitというExtensionの一部のようなので、コマンドパレットで出てこなかったら、C# Dev Kitをインストール)

対象ドキュメント

Upgrading custom code libraries to .NET 8 - ODC Documentation

.NET 6のサポート停止予定は2024/12/20

フォーラムにOutSystemsスタッフからの言及があった。
External Logic now supports .NET 8 | OutSystems

By the end of the year (December 20, 2024), we will stop supporting External Logic based on the .NET 6 Runtime.

この日を過ぎても動かなくなるわけではないが、「.NET 6を使ったExternal LogicのアップロードやReleaseはできなくなる」とのこと。

当然ながら、.NET 6を使うのはサポート対象外になるため、基本的にアップデートすることになる。
また、この状況で新しいExternal Logicを.NET 6で作っても、問題を増やすだけなので、新しいプロジェクトなら基本的に.NET 8で作成する。

警告表示

現時点で、ODC Portal > External logicページで、.NET 6を使って作られたものは、Runtime version列に警告のアイコンが表示されるようになっている。
スクリーンショット 2024-10-26 0.58.25.png

アイコンにマウスオーバーすると、「This library is using a runtime version that will be discontinued on Dec 20, 2024.」と表示される(廃止予定のバージョンを使っているという警告)。

アップデートを試す前に:自動テストがある場合は動作確認として実行しておく

自動テスト作成済みであれば、アップデート前後でテストを実行することで、回帰テストとすることができる。

C#コードとしてのテストなら、xunitなどを使ったユニットテスト

OutSystemsのActionとしてのテストなら、BDDFrameworkを使ったテスト

今回、手元でアップデートしようとしているExternal Logicに対しては、以前BDDFrameworkのテストを作成済みだったのでこれを実行しておいた。

アップデート手順を試す

Identify .NET 6: .NET 6で作られたExternal Libraryを特定する

これは、↑で書いたように、ODC Portalの一覧画面でチェックするのが簡単。

Upgrade to .NET 8: .NET 8にアップグレード

.NET 8 SDKをインストール

Download .NET 8.0 (Linux, macOS, and Windows)から.NET 8のSDKをダウンロードしてインストールする。

インストールが終わったら、念のため以下のコマンドで確認。

dotnet --list-sdks    
8.0.403 [/usr/local/share/dotnet/sdk]

プロジェクトファイルを書き換えてバージョンアップ

プロジェクトファイル(抜粋):.csproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="OutSystems.ExternalLibraries.SDK" Version="1.4.0" />
  </ItemGroup>

Target Frameworkを書き換える(net6.0 -> net8.0)。

ライブラリのバージョン更新

VSCodeのコマンドパレットで「NuGet: Update NuGet Package」と入力。出てきたオプションから「NuGet: Update NuGet Package」を選択。
スクリーンショット 2024-10-27 22.54.38.png

参照しているライブラリが出てくる。少なくとも、OutSystems.ExternalLibraries.SDKは必ず使っているのでこれを選択。他のライブラリを使っているプロジェクトなら、個別に更新の必要性を判断する。
スクリーンショット 2024-10-27 22.56.26.png

新しいバージョンが出ていたら更新を検討(今回は最新の、1.5.0を選択。External Library機能が当初リリースされた時は、1.4.0を使っていたので更新になる)。
スクリーンショット 2024-10-27 22.57.26.png

.csprojファイルの参照バージョンが更新される。

Release the new version of the library: ODCにアップロード > Release Libraryする

この部分の手順はこれまでと変わらない。

以下のコマンドをターミナルから入力し、

dotnet publish -c Release -r linux-x64 --self-contained false

<プロジェクト>/Release/net8.0/linux-x64/publishにできているファイルをzip圧縮して、ODC Portal > External logicメニュー > .NET 6時に登録済みのLibraryを選択 > Upload new revisionボタンから、作成したzipファイルをアップロードする。
External LibraryはLibraryの一種なので、アップロードが終わったら、Releaseを忘れずに。

詳細は以下を参照。

Runtime versionが.NET 8.0に更新されたことを確認する。
スクリーンショット 2024-10-27 23.24.18.png

回帰テストを実施する

今回は自動テストがあるので、テストAppの参照を更新し、テストScreenを開き直し、全テストが成功していることを確認して終わり。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?