Ⅰ. はじめに
タイトルの通り「.NET Coreで実行ファイル1つだけを出力する方法(Warpを利用する場合)(非推奨)」です。
「.NET Core で 実行ファイル(.exe)を作成する方法」はこちら
https://kagasu.hatenablog.com/entry/2017/04/16/192117
「.NET Coreで実行ファイル1つだけを出力する方法」はこちら
※特に理由がない限りこちらを利用して下さい。
https://kagasu.hatenablog.com/entry/2019/05/08/022255
SCD(Self-contained deployments) を行うと「実行ファイル1つだけ」ではなく、「実行ファイル1つと100個を超えるDLLファイル」が同時に出力されます。
100個を超えるDLLファイルは CoreCLR と呼ばれる .NET Core のランタイムなので削除できません。
その為この記事では「フォルダを圧縮して1つの実行ファイルに埋め込む」事ができる Warp を利用する方法を紹介します。
※2019/05/08 追記
.NET Core 3.0で PublishSingleFile が追加されました。
よって、Warpを利用する方法を非推奨に変更しました。
Ⅱ. Warp とは
.NET Core, Node.js 等に対応した自己展開ファイルを作成する為のアプリケーションです。
実行時に一時ディレクトリに自己展開する為、起動速度以外のパフォーマンスは低下しません。
Ⅲ. やり方
1. 以下記事を参考にしてSCDを行う
2. Warp をダウンロードする
3. Warp で自己展開ファイルを作成する
WindowsでLinux向けファイルを作成する事もできます。
# Windows warp-packer --arch windows-x64 --input_dir bin/Release/netcoreapp2.1/win-x64/publish --exec myapp.exe --output out.exe # Linux warp-packer --arch linux-x64 --input_dir bin/Release/netcoreapp2.1/linux-x64/publish --exec myapp --output out # macOS warp-packer --arch macos-x64 --input_dir bin/Release/netcoreapp2.1/osx-x64/publish --exec myapp --output out
4. 実行結果