本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
この記事で説明している事
この記事では、.NET Coreを利用し、コンソールアプリを作成して、Linux上で自己完結型の実行可能ファイルを実行しています。
.Net Coreはクロスプラットフォーム
クロスプラットフォームで実行する際に
1.自己完結型
2.フレームワーク依存型
の2つの形式があります。
自己完結型にすると、そのアプリに.NETランタイムが含められます。ユーザは、.NETフレームワークのインストールをすることなく実行が可能です。
クロスプラットフォームバイナリ作成
dllファイルの形式で、フレームワーク依存として発行すると、クロスプラットフォームバイナリが作成されます。
Linux上に filename.dllを置くと
dotnet <filename.dll>
というコマンドで実行が可能でした。ただ、この方法だと、あらかじめLinux上にも対象のFrameWorkをインストールしておく必要があります。
自己完結型バイナリの作成
VisualStudio から、ビルドメニュー → 「アプリ名」の発効をクリック
開始ボタンをクリック
発行先としてフォルダを選択
ターゲットの場所の右端、「構成」ボタンをクリックします
配置モードを自己完結、ターゲットランタイムを linux-x64とします
発効します
発効にはしばらく時間がかかり、一つのフォルダに184個のファイルが出来上がりました。これは利用するdllなどでサイズが変わると思います。
アプリ配置と実行
出来上がったフィルをすべてLinux上にコピーします
/publish# chmod 755 ConsoleApp1
実行するとこんな感じです
/publish$ ./ConsoleApp1
Hello World!
単一アプリの作成
184個のファイルができるのもうっとおしいのですが、VisualStudio 2019 で作成すると、単一ファイルの作成が可能です。
とりあえずターゲットフレームワークも3.1にしてみました。
この状態で発行すると、すべて一つのファイルにまとまります。サイズは76MB程度になりました。
~$ chmod 755 ConsoleApp1
一つのファイルだけでも実行できました。
~$ ./ConsoleApp1
Hello World!
この実行方法は、自己完結型のクロスプラットフォームバイナリという位置づけで、予めLinuxに.NET Coreをインストールしておく必要がありません。
詳しくは、こちらからhttps://techlive.tokyo/archives/10101/embed
まとめ
自己完結型の実行ファイルは、ファイルサイズが大きくなりますが、そのファイルを置くだけで実行が可能になります。
ロリポップでは実行不可
さすがに普通のWordPressなどが利用できるようになっているレンタルサーバでは実行できませんでした。ロリポップのエンタープライズプランを利用しています。
$ ./ConsoleApp1
Failed to resolve full path of the current executable [/proc/self/exe]