スポンサーリンク
WindowsのVisual Studioを使用して.Net Coreで開発したアプリをLinux環境で実行する方法を紹介します。
通常のビルドと違ってLinux用に実行ファイルを発行する必要があります。
環境
開発環境
- Windows 10
- Visual Studio Community 2019
- C#
- .Net Core 3.1
実行環境
- WSL
- Ubuntu 20.04
プログラム
こちらのプログラムをLinux上で実行したいと思います。
using System;
namespace HelloLinux
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
発行
2種類の発行方法があります。
種類
.NET Coreの配置にはフレームワーク依存の展開と自己完結型の展開があります。
ランタイム依存
ご自分のアプリケーション自体とその依存関係のみを含むアプリケーションが生成されます。 そのアプリケーションのユーザーは、.NET Core ランタイムを個別にインストールする必要があります。
メリット
- 実行ファイルの容量を削減できる
デメリット
- ランタイムの事前インストールが必要
- .Net Coreのバージョンが固定できない。更新される可能性がある。
自己完結型
.NET Core ランタイムとライブラリ、さらにご自分のアプリケーションとその依存関係を含むアプリケーションが生成されます。 そのアプリケーションのユーザーは、.NET Core ランタイムがインストールされていないコンピューター上でそれを実行することができます。
メリット
- .Net Coreのバージョンを固定できる
- 実行環境にランタイムを事前にインストールしなくてよい
デメリット
- 実行ファイルの容量が大きくなってしまう(Hello Worldだけで約70MB)
- .Net Coreのバージョンアップが困難
発行手順
この記事では自己完結型で説明していきたいと思います。
(ランタイム依存での発行は3番の配置モードで「ランタイム依存」を選択)
- プロジェクト右クリック → 発行
- フォルダー → [次へ(N)]
- [完了(F)]
- ターゲットランタイムの
をクリック - 配置モード: 自己完結, ターゲットランタイム: linux-x64に変更 → [保存]
- [発行(U)]
- 実行ファイル(拡張子なし)とランタイムなど (HelloWorldだけで約75BM)
\(project name)\bin\Release\netcoreapp3.1\linux-x64にあります。
実行
./(実行ファイル名)
で実行可能です。
$ cd /mmt/c/Users/(省略)/netcoreapp3.1/linux-x-64 $ ./HelloLinux Hello World!
- WSLからWindowsのCドライブにマウントできます。
- /mnt/{ドライブ名}からアクセスできます。
Cドライブの場合は /mnt/c です。 - 自己完結型で発行 → WSLに.Net Coreをインストール無しで実行できます。
スポンサーリンク
スポンサーリンク