「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
.NET Coreのコンソールアプリの発行とデプロイ
前提 †
Linux における .NET Core の前提条件 †
https://docs.microsoft.com/ja-jp/dotnet/core/linux-prerequisites?tabs=netcore2x
インストールが必要な依存ライブラリは Linux ディストリビューションごとに異なっている。
方式 †
どうも、FDDが推奨の方式らしい。
SCDでは、バージョン不一致の問題が発生し易いもよう。
FDD †
- FDD : Framework-dependent deployment
- .NET Frameworkでの配置と同様の仕組み。
- 展開先(アプリケーションが動作するOS)に、
.NET Coreのランタイムがインストールされていることを前提としている仕組み。
メリット †
以下が挙げられる。
- ディストリビューション毎に .NET Core の依存関係を考慮する必要が無い。
- パッケージ作成時にターゲット プラットフォーム (OS、アーキテクチャ) を考慮する必要が無い。
- バージョン不一致の問題が発生し難いもよう。
デメリット †
以下の2点が挙げられる。
- .NET Coreランタイム側のバージョンアップでまれではあるが
開発-実行環境間でアプリの動作に変更が生じる可能性があること。
SCD †
- SCD : Self-contained deployment
- 配置するバイナリのみで実行可能な形式(ランタイムも同時に配置する)
メリット †
以下の2点が挙げられる。
- 開発時にランタイムのインストールが不要。
- 利用するランタイムを完全に固定できる。
デメリット †
以下の点が挙げられる。
- .NET Coreランタイムは個別であるため、実行や配置が複雑になる。
- OSごとにビルドを行ってバイナリを生成しないといけない。
- パッケージ作成時にターゲット プラットフォーム (OS、アーキテクチャ) の選択が必要。
- バージョン不一致の問題が発生し易いもよう。
- バイナリにランタイムが含まれるので
- 配置するバイナリのサイズが大きくなり、
- 配置先のマシンで占めるディスク容量が増える。
検証 †
結果 †
FDDもSCDも大方動作したが、やはり、FDDの方が楽。
参考 †
Microsoft Docs †
以下の「サードパーティの依存関係を含む。含まない。」は、
NuGetする・しない程度の違いしかないので、手順は複雑化しない。
FDD †
SCD †
osscons.jp †
.NET 開発基盤部会 Wiki †
Tags: :.NET開発, :.NET Core