.NET SDK を Ubuntu にインストールして Hello World する

# .NET SDK を Ubuntu にインストールして Hello World する

こんにちは、@studio_meowtoon です。今回は、WSL の Ubuntu 24.04 に .NET SDK をインストールする手順と、Hello World を出力する方法を紹介します。
![dotnet_on_ubuntu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/122b9d53-4e66-4fee-68d3-ec91a296f961.png)

## 目的

Windows 11 の Linux でクラウド開発します。

こちらから記事の一覧がご覧いただけます。

https://qiita.com/studio_meowtoon/items/6119ab05d8b13527efd8

## 実現すること

+ Windows 11 の WSL Ubuntu 24.04 に .NET SDK をインストールして、C# プログラムをビルド、実行するシンプルな開発環境を構築します。

## 技術トピック

### .NET とは？

<details>
<summary>こちらを展開してご覧いただけます。</summary>

### [Microsoft .NET](https://dotnet.microsoft.com/ja-jp/learn)

:::note info
.NET は、マイクロソフトによって開発されたオープンソースのクロスプラットフォーム開発フレームワークです。

|キーワード|内容|
|:--|:--|
|クロスプラットフォーム対応|.NET は、Windows、macOS、Linux、Android、iOS など、複数のプラットフォームで実行されるように設計されています。これにより、同じコードを複数のプラットフォームで共有できます。|
|豊富なライブラリ|.NET には、豊富なライブラリが含まれています。これにより、開発者は、簡単にデータベースやネットワーク、GUIなどの機能を組み込むことができます。|
|マルチ言語サポート|.NET は、複数のプログラミング言語 (C#、F#、Visual Basic など) をサポートしています。開発者は、自分の好きな言語でアプリケーションを開発できます。|
|高速性|.NET は、JIT コンパイラによって実行されるため、高速に動作します。また、メモリ管理が自動的に行われるため、開発者はメモリ管理に関する問題を心配する必要がありません。|
|セキュリティ|.NET には、セキュリティに関する多数の機能が含まれています。たとえば、コードアクセスセキュリティ (CAS) があり、アプリケーションに対する不正なアクセスを防止することができます。|

これらの特徴とメリットにより、.NET は、クロスプラットフォーム開発において人気のあるフレームワークの一つとなっています。
:::

</details>

## 開発環境

+ Windows 11 Home 23H2 を使用しています。

:::note info
[WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu を操作していきますので macOS の方も参考にして頂けます。  
:::

<details>

WSL (Microsoft Store アプリ版) [※ こちらの関連記事からインストール方法をご確認いただけます](https://qiita.com/studio_meowtoon/items/cd0c4a607d451dbf5430)

```sh
> wsl --version
WSL バージョン: 2.2.4.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.61
```

Ubuntu [※ こちらの関連記事からインストール方法をご確認いただけます](https://qiita.com/studio_meowtoon/items/cd0c4a607d451dbf5430)

```sh
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04 LTS
Release:        24.04
Codename:       noble
```

</details>

:::note warn
この記事では基本的に **Ubuntu のターミナルで操作**を行います。**Vim を使用してコピペする方法**を初めて学ぶ人のために、以下の記事で手順を紹介しています。ぜひ挑戦してみてください。
:::

https://qiita.com/studio_meowtoon/items/7771ad48676926e41463

## .NET SDK をインストール

:::note info
Ubuntu 24.04 に .NET をインストールする場合、パッケージリポジトリの追加は必要ありません。
:::

インストールします。

```sh
$ sudo apt update
$ sudo apt install dotnet-sdk-8.0
```

バージョンを確認します。

```sh
$ dotnet --list-sdks
8.0.107 [/usr/lib/dotnet/sdk]
$ dotnet --version
8.0.107
```

情報を表示します。

```sh
$ dotnet --info
.NET SDK:
 Version:           8.0.107
 Commit:            1bdaef7265
 Workload version:  8.0.100-manifests.43c23f91

ランタイム環境:
 OS Name:     ubuntu
 OS Version:  24.04
 OS Platform: Linux
 RID:         ubuntu.24.04-x64
 Base Path:   /usr/lib/dotnet/sdk/8.0.107/

インストール済みの .NET ワークロード:
 Workload version: 8.0.100-manifests.43c23f91
表示するインストール済みワークロードはありません。

Host:
  Version:      8.0.7
  Architecture: x64
  Commit:       2aade6beb0

.NET SDKs installed:
  8.0.107 [/usr/lib/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 8.0.7 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 8.0.7 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  Not set

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download
```

## Hello World を表示する手順

プロジェクトルートフォルダに移動します。  
※ ~/tmp をプロジェクトルートフォルダとします。

```sh
$ mkdir ~/tmp
$ cd ~/tmp
```

コンソールアプリを作成します。  
※ HelloApp がアプリ名です。

```sh
$ dotnet new console -o HelloApp -f net8.0
```

コンソールアプリをビルド・実行します。

```sh
$ cd ~/tmp/HelloApp
$ dotnet run
Hello, World!
```

ターミナルに "Hello, World!" が表示されました。

### コンソールアプリの内容確認

プロジェクト構成を確認します。

```sh
$ tree -I 'bin|obj'
.
├── HelloApp.csproj
└── Program.cs
```

プロジェクトファイルを確認します。

```sh
$ cat HelloApp.csproj
```

```xml:HelloApp.csproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>
```

プログラムを確認します。

```sh
$ cat Program.cs
```

```csharp:Program.cs
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
```

:::note info
.NET 5.0 まではこうでした。

```csharp:Program.cs ※ .NET 5.0
using System;
namespace MyApp {
    class Program {
        static void Main(string[] args) {
            Console.WriteLine("Hello, World!");
        }
    }
}
```

:::

## まとめ

+ Ubuntu に .NET SDK をインストールして、シンプルな開発環境を構築することが出来ました。

:::note warn
実際の開発では、軽量なテキストエディタである **VS Code** や、**IDE (統合開発環境)** を使用して、.NET プログラムを開発することが一般的です。しかし、dotnet コマンドでビルドしたり、実行したりすることも、.NET 開発環境を理解する上で役立ちます。
:::

どうでしたか？ Window 11 の WSL Ubuntu に、.NET の開発環境を手軽に構築することができます。ぜひお試しください。今後も .NET の開発環境などを紹介していきますので、お楽しみに。それでは失礼します。

## 推奨コンテンツ

https://qiita.com/studio_meowtoon/items/1cdc65e5c6d24cc6128d

## 参考資料

https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-ubuntu-install?tabs=dotnet8&pivots=os-linux-ubuntu-2404