ついに .NET Core 3.1 が利用可能に & .NET 5にも対応

「.NET Core 3.1 への対応まだ?というか、.NET 5 以降どうなるの??」とご心配の皆さん、お待たせしました!

ついに Linux 向けの ProGet で .NET Core 3.1 が使えるようになりました。

また、続けて.NET 5 以降 にも対応予定ですので、乞うご期待ください。

.NET Core 3.1 で何が変わる?

実際のところ、それほど変わりません・・・。と言うより、変わらないようにしました。.NET 5 が今までのフレームワークと大きく違うことから、当然 ProGet をアップグレードする際も大きな変更が必要でした。しかし、できるだけ以前と変わらないようにして、ユーザーが「あれ??前と全然違うぞ??」となって混乱しないようにしています。

Linux 向けの ProGet では、 progetという名前のDockerコンテナとしてシッピング されます。v5.3.12 以降、コンテナは .NET Coreを使用するようになりますが、これも近いうちに .NET 5 ベースとなる予定です。

Mono ベースのイメージもまだシッピングされているので、何か問題がある場合は、progetmono もインストールできます。しかし、progetmono イメージの新しいバージョンのシッピングは将来停止する予定です。

Windows 向けの ProGet の場合、特に使用上の変化はありません。しかし、おそらく1、2年以内にProGet のメジャーリリースのアップデートを適用するのに「オペレーティングシステムに新しいバージョンの .NET がインストールされていること」が要件となる予定です。

そして、その時期が来た際は、 要件が満たされるまで Inedo Hub からインストールまたはアップグレードができなくなります。これ以外の方法としては、.NETの「自己完結型ランタイム」機能を使用することで、ランタイムに埋め込んでシッピングも可能です(参照:Inedo Hub Overview)。

.NET Core / .NET 5の最大のポイントは?

最大のポイントは、他の製品、つまり Build Master (CI/CD プラットフォーム) や Otter (サーバー構成/プロビジョニング) をまたいだパワフルなクロスプラットフォーム機能の追加です。両方の製品が Linux に統合されているだけでなく、それらを Linux 上で実行できるというのは、ユーザーにとって大きなアドバンテージとなります。

そして、実際のところ、「古い .NET に留まる」という選択肢はありません。なぜなら、Microsoft は「今後 .NET Core / .NET5のみしかサポートしない」 と明確にアナウンスしているからです。したがって、そのうち廃止 となる .NET Framework の使用は早めに止めておくほうが良いでしょう。

また、.NET Core / .NET 5によって、Linux 向け ProGet の安定性とパフォーマンスも向上します 。

残念ながら、Monoはデグレード したり、奇妙な動作を行ったりすることが頻繁にあり、 それがユーザーエクスペリエンスの低下につながっていました。そのため、問題が発生するたびに急いで回避策を探したり、修正パッチを配布したりすることがよくありました。

実際のところ、この不安定さが Linuxでの BuildMaster と Otter のシッピングを躊躇していた主な理由の1つでした。技術的には Mono での実行はそれほど難しくないものの、とりわけ製品システムの重要な部分に対しては、このプラットフォームを使用したいとは思えませんでした。しかしながら、Linuxで .NET Core / .NET 5 を動かす場合は話が変わってきます。

これからすべきこと

.NET Frameworkより新しいフレームワークへの移行を後回しにせず、.NET 5 を含めてなるべく早く計画するようにしてください。

Inedoでは、.NET Core3.1を介したLinux 向けProGet のシッピングを初めとして、サポートするライブラリの多くを移行するなど、いくつかの大きな作業を進めてきました。

ProGetの次は、Otterに取りかかる予定です。これには Inedo Agentをクロスプラットフォーム化することも含まれるため、大がかりな作業となりますが、Linux 向け Otter のシッピングについては .NET 5 のリリースまでに終わらせる予定です。そして最後には、Linux 用のBuildMaster へと焦点を当てたいと思っています。

ProGet の .NET Coreへの移行の道のりはかなり長いものでした。そして、この間にはさまざまな出来事がありました。今後、移行の舞台裏でユーザーに気付かれないように行った数々の変更や、移行の流れとそこで得られた教訓を共有していく予定です。とは言っても、このブログの読者であれば、もう知っていることもあるかもしれませんが。