C#ランタイムとは?インストール方法・バージョン確認・実行エラーの解決策を初心者向けに解説

はじめに

C#で作られたアプリケーションを起動したときに、「.NETをインストールしてください」「必要なフレームワークが見つかりません」と表示されることがあります。このようなエラーの多くは、アプリの実行に必要なC#ランタイムがインストールされていない、またはバージョンやCPUアーキテクチャが一致していないことが原因です。

一般に「C#ランタイム」と呼ばれているものは、現在のC#アプリでは主に「.NET Runtime」を指します。ただし、アプリの種類によっては.NET Desktop RuntimeやASP.NET Core Runtime、従来型の.NET Frameworkが必要です。

この記事では、C#ランタイムの役割や.NET SDKとの違い、Windows・Mac・Linuxへのインストール方法、バージョン確認、代表的な実行エラーの解決策を初心者向けに解説します。

1. C#ランタイムとは?初心者向けに基本をわかりやすく解説

1-1. C#ランタイムの役割とは

C#ランタイムとは、C#で作成されたプログラムをパソコン上で実行するための基盤です。現在のC#アプリケーションでは、基本的に.NET Runtimeがこの役割を担当します。

.NET Runtimeには、プログラムを読み込んで実行するCLR(Common Language Runtime)や、文字列操作、ファイル処理、ネットワーク通信などに使われる基本ライブラリが含まれています。

ランタイムが担当する主な処理は次のとおりです。

  • C#プログラムの読み込みと実行

  • 中間コードから機械語への変換

  • メモリの確保と解放

  • ガベージコレクション

  • 例外処理

  • スレッド管理

  • 基本クラスライブラリの提供

つまり、C#ランタイムは、C#で書かれた命令とWindows、macOS、LinuxなどのOSとの間を取り持つ実行エンジンです。

1-2. C#のプログラムが実行される仕組み

C#のソースコードは、通常、そのままCPUで実行されるわけではありません。まずC#コンパイラによって、ILと呼ばれる中間コードを含むアセンブリに変換されます。

基本的な流れは次のとおりです。

  1. 開発者がC#のソースコードを書く

  2. C#コンパイラがソースコードをILに変換する

  3. ILと各種メタデータが、DLLファイルやEXEファイルに格納される

  4. .NET Runtimeがアプリケーションを読み込む

  5. JITコンパイラが必要なILをCPU向けの機械語に変換する

  6. CPUが変換後の命令を実行する

.NET Runtimeが存在することで、同じ考え方で作られたC#アプリを複数のOSやCPU環境で動かしやすくなります。

1-3. ランタイムが必要になるケース

C#ランタイムが必要になる代表的なケースは、フレームワーク依存形式で配布された.NETアプリを実行するときです。

例えば、次のようなアプリが該当します。

  • C#で作られたコンソールアプリ

  • Windows Formsアプリ

  • WPFアプリ

  • ASP.NET CoreのWebアプリ

  • .NETを利用する業務ソフト

  • C#製のコマンドラインツール

  • .NETを使用するゲーム関連ツール

一方、アプリの配布フォルダーに.NET Runtime自体が含まれている「自己完結型アプリ」であれば、利用者がランタイムを別途インストールしなくても実行できる場合があります。.NETアプリには、端末側の.NETを使用するフレームワーク依存形式と、必要なランタイムを含める自己完結形式があります。Microsoft Learn+2Microsoft Learn+2

1-4. ランタイムがないと起こること

必要なC#ランタイムがインストールされていない場合、アプリが起動せず、次のようなメッセージが表示されます。

  • You must install .NET to run this application

  • You must install or update .NET to run this application

  • The framework 'Microsoft.NETCore.App' was not found

  • The framework 'Microsoft.WindowsDesktop.App' was not found

  • The framework 'Microsoft.AspNetCore.App' was not found

  • 「必要なフレームワークが見つかりません」

  • 「このアプリケーションを実行するには.NETをインストールする必要があります」

ランタイムがインストールされていても、必要なメジャーバージョンやCPUアーキテクチャが異なると起動できないことがあります。エラー画面には、不足しているフレームワーク名、バージョン、x86・x64・Arm64などの情報が表示されるため、閉じる前に内容を確認しましょう。Microsoft Learn+1

2. C#ランタイムと.NETの関係

2-1. C#と.NETの違い

C#はプログラミング言語であり、.NETはC#などでアプリケーションを開発・実行するためのプラットフォームです。

簡単に表すと、次のような関係です。

  • C#:プログラムを書くための言語

  • .NET Runtime:プログラムを実行するための環境

  • .NET SDK:プログラムを開発するための道具一式

  • .NETライブラリ:アプリから利用できる機能の集合

.NETではC#のほか、F#やVisual Basicなども利用できます。.NETは無料で利用できるオープンソースのクロスプラットフォーム開発基盤で、Windows、macOS、Linuxをサポートしています。Microsoft+1

2-2. .NET Runtimeとは

.NET Runtimeは、ビルド済みの.NETアプリケーションを実行するための環境です。基本的なコンソールアプリやサービスを動かすだけであれば、通常は.NET Runtimeをインストールします。

.NET Runtimeには、アプリを新規作成するためのC#コンパイラやプロジェクトテンプレートは含まれていません。そのため、原則として「実行専用」と考えると分かりやすいでしょう。

なお、アプリが要求しているフレームワークがMicrosoft.NETCore.Appであれば、基本的に通常の.NET Runtimeが必要です。

2-3. .NET SDKとは

.NET SDKは、C#や.NETのアプリケーションを開発するためのツール一式です。

主に次のものが含まれます。

  • .NET Runtime

  • ASP.NET Core Runtime

  • C#コンパイラ

  • dotnetコマンド

  • プロジェクトテンプレート

  • ビルドツール

  • NuGetパッケージ管理機能

C#のコードを書き、ビルドやテスト、発行まで行う場合は.NET SDKを選びます。SDKには対応するランタイムが含まれるため、同じバージョンの通常ランタイムを別途インストールする必要はありません。Microsoft Learn+1

2-4. .NET Frameworkとの違い

.NET Frameworkは、主に従来のWindowsアプリケーションで使われているWindows専用の実行基盤です。一方、現在の.NETはWindows、macOS、Linuxに対応するクロスプラットフォームの実行基盤です。

両者は名前が似ていますが、同じものではありません。

  • .NET:現在のクロスプラットフォーム版

  • .NET Framework:従来型のWindows専用基盤

  • .NET Core:現在の.NETの前身

  • .NET 5以降:名称が「.NET」に統一された世代

古い業務ソフトから「.NET Framework 4.8」などを求められた場合、最新の.NET Runtimeをインストールしても代用できません。反対に、.NET 8や.NET 10を必要とするアプリは、.NET Frameworkだけでは実行できません。.NETの実装には、現行の.NET、.NET Framework、Monoなどがあり、それぞれ対象や互換性が異なります。Microsoft Learn+1

2-5. ASP.NET Core RuntimeとDesktop Runtimeの違い

ASP.NET Core Runtimeと.NET Desktop Runtimeは、実行するアプリの種類が異なります。

ASP.NET Core Runtimeは、ASP.NET Coreで作られたWebアプリやWeb APIを実行するためのランタイムです。アプリがMicrosoft.AspNetCore.Appを要求している場合に必要です。

.NET Desktop Runtimeは、Windows FormsやWPFなどのWindowsデスクトップアプリを実行するためのランタイムです。アプリがMicrosoft.WindowsDesktop.Appを要求している場合に必要です。

Windowsでは、一般的な.NETアプリに加えて幅広いアプリを実行したい場合、ASP.NET Core Runtimeと.NET Desktop Runtimeの両方を導入する方法があります。Desktop RuntimeはWindows向けであり、macOSやLinux用のWindows Forms・WPFランタイムはありません。Microsoft Learn+1

3. C#ランタイムはどれをインストールすればいい?

3-1. 実行だけしたい場合は.NET Runtime

コンソールアプリやバックグラウンド処理など、基本的な.NETアプリを実行するだけなら.NET Runtimeをインストールします。

ただし、アプリのエラー画面に「Desktop Runtime」や「ASP.NET Core Runtime」と書かれている場合は、通常の.NET Runtimeではなく、指定された種類を選んでください。

「何を入れればよいか分からない」という場合は、次の3点を確認します。

  • エラーメッセージに表示されているフレームワーク名

  • 必要なバージョン

  • 必要なアーキテクチャ

推測で最新版を入れるよりも、アプリが要求する内容に合わせることが重要です。

3-2. C#で開発したい場合は.NET SDK

C#のプログラムを作成、ビルド、テストしたい場合は.NET SDKをインストールします。

.NET SDKをインストールすると、次のようなコマンドを利用できます。

Bash
dotnet new console
dotnet build
dotnet run
dotnet test
dotnet publish

Visual Studio Codeなどのエディターを使う場合も、実際のビルドには.NET SDKが必要です。

3-3. Windowsアプリを動かす場合はDesktop Runtime

Windows FormsやWPFで作られたアプリを実行する場合は、.NET Desktop Runtimeを選びます。

エラーに次の表示がある場合は、Desktop Runtimeが必要です。

Microsoft.WindowsDesktop.App

Desktop Runtimeには通常の.NET Runtimeの機能も含まれるため、Windowsデスクトップアプリを利用する一般ユーザーは、Desktop Runtimeをインストールすることで問題が解決することが多いでしょう。

3-4. Webアプリを動かす場合はASP.NET Core Runtime

ASP.NET CoreのWebアプリやWeb APIをサーバー上で動かす場合は、ASP.NET Core Runtimeを使用します。

Windows ServerでIISを利用してASP.NET Coreアプリを公開する場合は、単体のASP.NET Core Runtimeではなく、IISとの連携機能を含むHosting Bundleを指定されることもあります。導入する製品やアプリの運用手順に従って選びましょう。

エラーに次の表示がある場合は、ASP.NET Core Runtimeが必要です。

Microsoft.AspNetCore.App

3-5. 32bit版と64bit版の選び方

一般的な64bit版Windowsでは、原則としてx64版を選びます。32bit版Windowsではx86版が必要です。

ただし、64bit版Windowsでも、実行するアプリが32bit専用であればx86版ランタイムを要求される場合があります。x86版とx64版は共存できますが、PATHの優先順位によって意図しないdotnetが呼び出されることがあるため注意が必要です。

選び方の目安は次のとおりです。

  • 64bit版Windows、一般的なPC:x64

  • 32bit版Windows:x86

  • 32bit専用アプリ:x86

  • Windows on Arm:Arm64

  • Intel搭載Mac:x64

  • Appleシリコン搭載Mac:Arm64

Windows向け.NETはx64、x86、Arm64を選択できます。Appleシリコン搭載MacではArm64、Intel搭載Macではx64を選択するのが基本です。Microsoft Learn+1

4. C#ランタイムのインストール方法

4-1. Windowsにインストールする方法

Windowsでは、Microsoft公式の.NETダウンロードページからインストーラーを入手する方法が簡単です。

基本的な手順は次のとおりです。

  1. Microsoft公式の.NETダウンロードページを開く

  2. 必要な.NETのメジャーバージョンを選択する

  3. Runtime、Desktop Runtime、ASP.NET Core Runtime、SDKのいずれかを選ぶ

  4. x64、x86、Arm64からPCに合うものをダウンロードする

  5. インストーラーを実行する

  6. インストール後にターミナルを開き直す

  7. dotnet --list-runtimesで確認する

WinGetを利用できる環境では、ターミナルからインストールすることも可能です。例えば.NET 10の場合は、次のようなコマンドを使用します。

PowerShell
winget install Microsoft.DotNet.Runtime.10

Desktop Runtimeの場合は次のとおりです。

PowerShell
winget install Microsoft.DotNet.DesktopRuntime.10

ASP.NET Core Runtimeは次のコマンドです。

PowerShell
winget install Microsoft.DotNet.AspNetCore.10

開発用のSDKは次のコマンドでインストールできます。

PowerShell
winget install Microsoft.DotNet.SDK.10

利用できるパッケージは、次のコマンドで検索できます。

PowerShell
winget search Microsoft.DotNet

公式ドキュメントでは、WinGet、インストーラー、インストールスクリプト、ZIP形式のバイナリなど、複数のWindows向け導入方法が案内されています。Microsoft Learn

4-2. Macにインストールする方法

Macでは、Microsoft公式サイトからmacOS用のインストーラーをダウンロードします。

Appleシリコン搭載MacではArm64、Intel搭載Macではx64を選択してください。Appleメニューの「このMacについて」を開くと、搭載しているチップを確認できます。

基本的な手順は次のとおりです。

  1. .NETの公式ダウンロードページを開く

  2. SDKまたはRuntimeを選ぶ

  3. macOSのArm64またはx64を選択する

  4. .pkg形式のインストーラーを実行する

  5. ターミナルを開き直す

  6. dotnet --infoで確認する

開発目的ならSDKを選ぶのが簡単です。macOS用SDKには、対応する.NET RuntimeとASP.NET Core Runtimeが含まれます。ただし、別のメジャーバージョンのランタイムが自動的に追加されるわけではありません。Microsoft Learn

4-3. Linuxにインストールする方法

Linuxでは、ディストリビューションのパッケージマネージャーを利用する方法が基本です。.NETはパッケージマネージャー、Snap、手動展開、コンテナイメージなどを利用して導入できます。Microsoft Learn

Ubuntu系で.NET 10のパッケージが提供されている場合は、次のようなコマンドを使用します。

Bash
sudo apt update
sudo apt install dotnet-runtime-10.0

ASP.NET Core Runtimeの場合は次のとおりです。

Bash
sudo apt install aspnetcore-runtime-10.0

SDKの場合は次のコマンドです。

Bash
sudo apt install dotnet-sdk-10.0

実際に利用できるパッケージ名やリポジトリの設定方法は、Ubuntu、Debian、Fedora、RHEL、AlmaLinuxなどのディストリビューションとバージョンによって異なります。必ずMicrosoft公式のLinux向けインストール手順で対象環境を選択してください。

Linuxでは、ディストリビューション側のリポジトリとMicrosoft側のリポジトリを混在させると、パッケージの依存関係が競合することがあります。原則として同じ提供元に統一しましょう。Microsoft Learn

4-4. Visual Studioと一緒にインストールする方法

WindowsでVisual Studioを利用する場合は、Visual Studio Installerから必要なワークロードを選択すると、対応する.NET SDKや関連コンポーネントをまとめて導入できます。

代表的なワークロードは次のとおりです。

  • Windows Forms・WPF:.NETデスクトップ開発

  • ASP.NET Core:ASP.NETとWeb開発

  • .NET MAUI:.NETマルチプラットフォームアプリUI開発

特定の.NET SDKを追加したい場合は、Visual Studio Installerの「個別のコンポーネント」タブから選択できます。インストール後も「変更」を選べば、ワークロードやコンポーネントを追加・削除できます。Microsoft Learn+1

4-5. オフライン環境でインストールする方法

インターネットに接続できないPCでは、接続可能な別のPCで必要なインストーラーやバイナリをダウンロードし、USBメモリなどで移動します。

.NET Runtime単体の場合は、次の流れです。

  1. オンライン環境で公式インストーラーをダウンロードする

  2. バージョン、OS、CPUアーキテクチャを確認する

  3. 必要に応じてチェックサムを検証する

  4. オフラインPCへファイルを移動する

  5. 管理者権限でインストールする

  6. コマンドで導入結果を確認する

ZIPやtar.gz形式のバイナリを展開して使う方法もあります。この場合は、展開先に合わせてDOTNET_ROOTPATHを設定します。異なる.NETバージョンを同じ展開先で共存させることも可能です。Microsoft Learn+1

Visual Studioをオフラインで導入する場合は、オンライン環境でオフラインレイアウトを作成します。必要なワークロードを事前に指定しておくと、ダウンロード容量を抑えられます。Microsoft Learn+1

4-6. インストール時の注意点

C#ランタイムをインストールするときは、次の点を確認してください。

  • Microsoft公式サイトから入手する

  • アプリが要求するメジャーバージョンを確認する

  • Runtime、Desktop Runtime、ASP.NET Core Runtimeを間違えない

  • x86、x64、Arm64を確認する

  • システム全体へ導入するときは管理者権限を使用する

  • インストール後はターミナルを開き直す

  • サポートが終了したバージョンを新規採用しない

  • 既存アプリが使用中の古いバージョンを安易に削除しない

インストールが完了しても、アプリが要求する種類やアーキテクチャと異なっていれば、エラーは解消されません。

5. C#ランタイムのバージョン確認方法

5-1. コマンドで確認する方法

.NETのバージョンは、コマンドプロンプト、PowerShell、ターミナルから確認できます。

よく使うコマンドは次の3つです。

Bash
dotnet --version
dotnet --list-runtimes
dotnet --info

SDKの一覧を確認したい場合は、次のコマンドも利用します。

Bash
dotnet --list-sdks

それぞれ表示する内容が異なるため、目的に合わせて使い分けることが重要です。Microsoft Learn+1

5-2. dotnet --versionで確認できる内容

dotnet --versionは、現在のdotnetコマンドが使用する.NET SDKのバージョンを表示します。

Bash
dotnet --version

実行例は次のとおりです。

10.0.301

注意点として、このコマンドで表示されるのは基本的にSDKのバージョンであり、インストール済みランタイムの一覧ではありません。また、プロジェクトフォルダーにglobal.jsonがある場合は、その指定によって選ばれるSDKが変わることがあります。

ランタイムだけをインストールしている環境では、dotnet --versionで期待する情報を確認できない場合があります。ランタイムを調べる目的では、dotnet --list-runtimesを使用してください。Microsoft Learn

5-3. dotnet --list-runtimesで確認できる内容

dotnet --list-runtimesを実行すると、インストールされているランタイムの種類、バージョン、保存場所が一覧表示されます。

Bash
dotnet --list-runtimes

表示例は次のとおりです。

Microsoft.AspNetCore.App 10.0.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 10.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 10.0.9 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

各名称の意味は次のとおりです。

  • Microsoft.NETCore.App:通常の.NET Runtime

  • Microsoft.AspNetCore.App:ASP.NET Core Runtime

  • Microsoft.WindowsDesktop.App:Desktop Runtime

x64版のdotnetで実行した場合は、基本的にx64側のランタイムが表示されます。x86とx64の両方を導入している場合は、どのdotnetが呼ばれているかも確認しましょう。Microsoft Learn

5-4. dotnet --infoで環境情報を確認する方法

dotnet --infoでは、SDK、ランタイム、OS、CPUアーキテクチャ、インストール場所などの詳細情報をまとめて確認できます。

Bash
dotnet --info

主に確認できる項目は次のとおりです。

  • 使用中のSDK

  • インストール済みSDK

  • インストール済みランタイム

  • OS名とバージョン

  • OSアーキテクチャ

  • RID

  • global.jsonの有無

  • .NETのベースパス

不具合を開発者やシステム管理者へ報告するときは、dotnet --infoの結果が有力な手掛かりになります。

5-5. Windowsのアプリ一覧から確認する方法

Windowsでは、「設定」からインストール済みの.NET関連製品を確認できます。

  1. Windowsの「設定」を開く

  2. 「アプリ」を選択する

  3. 「インストールされているアプリ」を開く

  4. 検索欄に.NETと入力する

次のような名称で表示されます。

  • Microsoft .NET Runtime

  • Microsoft ASP.NET Core Shared Framework

  • Microsoft Windows Desktop Runtime

  • Microsoft .NET SDK

  • Microsoft .NET Host

ただし、ZIP形式で手動展開した.NETは、アプリ一覧に表示されないことがあります。正確な状態を調べるには、コマンドによる確認を併用してください。

6. C#ランタイムのバージョン選びと更新方法

6-1. 最新版を使うべきケース

新規にC#アプリを開発する場合は、原則としてサポート中の最新LTS版を第一候補にします。新しいランタイムには、パフォーマンス改善、セキュリティ修正、新機能、最新OSや開発ツールへの対応が含まれるためです。

2026年6月19日時点では、.NET 10が最新のLTS版です。.NET 10は2028年11月14日までサポートされる予定です。最新パッチは2026年6月9日公開の10.0.9で、SDKの最新リリースとして10.0.301が案内されています。Microsoft+2Microsoft+2

ただし、既存アプリを実行するだけの場合は、単純に最新版を入れるのではなく、アプリが要求するバージョンを優先してください。

6-2. LTS版を使うべきケース

LTSはLong Term Supportの略で、長期間のサポートを重視するバージョンです。

次のような環境ではLTS版が適しています。

  • 企業の業務システム

  • 長期間運用するWebサービス

  • 頻繁なメジャーアップデートが難しい環境

  • 多数のPCやサーバーへ展開するシステム

  • 安定性と保守期間を重視するプロジェクト

.NETのLTSリリースは3年間、STSリリースは2年間のサポートを受けられます。ただし、サポートを受けるには、同じメジャーバージョン内で提供される最新のパッチを継続して適用する必要があります。Microsoft

6-3. アプリに必要なバージョンを確認する方法

アプリが必要とする.NETバージョンは、次の方法で確認できます。

  • アプリの公式サイトやマニュアルを確認する

  • 起動時のエラーメッセージを確認する

  • 配布元へ問い合わせる

  • アプリと同じフォルダーにあるruntimeconfig.jsonを確認する

例えば、sample.runtimeconfig.jsonに次のような記述がある場合があります。

JSON
{
"runtimeOptions": {
"framework": {
"name": "Microsoft.NETCore.App",
"version": "10.0.0"
}
}
}

nameは必要なランタイムの種類、versionは基準となるバージョンを表します。

主なフレームワーク名は次のとおりです。

Microsoft.NETCore.App
Microsoft.WindowsDesktop.App
Microsoft.AspNetCore.App

6-4. 古いバージョンを残すべきケース

.NETは複数のメジャーバージョンを同じPCに共存させられます。そのため、.NET 8を使用するアプリと.NET 10を使用するアプリを、同じPCで動かすことが可能です。

次のような場合は古いランタイムを残した方が安全です。

  • 古い業務ソフトが使用している

  • アプリの動作確認が完了していない

  • ベンダーが特定バージョンを指定している

  • 本番環境と同じ構成を維持する必要がある

  • 移行作業の途中である

新しいメジャーバージョンを入れても、古いメジャーバージョンを必要とするアプリが必ず動くとは限りません。利用状況が分からないランタイムを安易に削除しないことが重要です。

6-5. ランタイムをアップデートする方法

.NET Runtimeの更新方法は、最初に導入した方法によって異なります。

公式インストーラーを使用した場合は、新しいパッチのインストーラーをダウンロードして実行します。WinGetを使用している場合は、次のコマンドで更新対象を確認できます。

PowerShell
winget upgrade

特定の製品を更新する場合は、例えば次のように実行します。

PowerShell
winget upgrade Microsoft.DotNet.DesktopRuntime.10

Linuxでは、パッケージマネージャーを使用します。

Bash
sudo apt update
sudo apt upgrade

更新後は、次のコマンドで実際のバージョンを確認します。

Bash
dotnet --list-runtimes

サポート期間中であっても、古いパッチのままでは既知の脆弱性が残る可能性があります。同じメジャーバージョンの最新パッチを定期的に適用しましょう。

6-6. 不要なランタイムをアンインストールする方法

Windowsでは、「設定」から対象の.NET Runtimeを選択し、「アンインストール」を実行できます。Linuxでは、導入時に使用したパッケージマネージャーで削除します。

削除前には、必ず次のコマンドで導入状況を確認してください。

Bash
dotnet --list-runtimes
dotnet --list-sdks

Microsoftが提供する.NET Uninstall Toolを利用する方法もあります。ただし、削除できる対象やインストール方法には制限があります。同ツールはWindowsとmacOSをサポートしていますが、Linuxには対応していません。Microsoft Learn+1

古いランタイムを削除すると、それを使用するアプリが突然起動しなくなることがあります。業務PCやサーバーでは、アプリの依存関係を確認してから削除してください。

7. C#ランタイム関連のよくある実行エラーと解決策

7-1. 「You must install .NET to run this application」と表示される

このメッセージは、アプリが必要とする.NETランタイムを見つけられないときに表示されます。

まず、エラー画面に記載されている次の情報を確認します。

  • Framework

  • Version

  • Architecture

  • .NET location

例えば、FrameworkがMicrosoft.WindowsDesktop.AppならDesktop Runtime、Microsoft.AspNetCore.AppならASP.NET Core Runtimeが必要です。

解決手順は次のとおりです。

  1. エラー画面をスクリーンショットで保存する

  2. 必要なフレームワーク名を確認する

  3. 必要なメジャーバージョンを確認する

  4. x86、x64、Arm64を確認する

  5. Microsoft公式サイトから一致するランタイムをインストールする

  6. アプリを再起動する

フレームワーク依存形式のアプリは、端末に互換性のある.NETが必要です。Microsoft Learn

7-2. 「必要なフレームワークが見つかりません」と表示される

.NET自体はインストールされているものの、アプリが要求する種類やメジャーバージョンがない可能性があります。

次のコマンドを実行します。

Bash
dotnet --list-runtimes

アプリが.NET 8を要求しているのに.NET 10しか表示されない場合、既定の設定では.NET 8が必要になることがあります。.NETは通常、同じメジャーバージョン内の新しいマイナー版やパッチ版へはロールフォワードできますが、異なるメジャーバージョンへ必ず自動移行するわけではありません。Microsoft Learn+1

最も安全な解決方法は、エラーに表示されているメジャーバージョンの最新パッチを追加でインストールすることです。

7-3. 「hostfxr.dllが見つかりません」と表示される

hostfxr.dllは、.NETアプリが適切なランタイムを探して起動するために使われる重要なファイルです。

エラーの主な原因は次のとおりです。

  • .NETのインストールが破損している

  • 必要なランタイムがインストールされていない

  • PATHが誤った.NETを参照している

  • x86版とx64版が競合している

  • 自己完結型アプリの配布ファイルが不足している

  • セキュリティソフトによってファイルが隔離された

  • 対応していないOSで実行している

まず、次のコマンドを実行します。

PowerShell
where.exe dotnet
dotnet --info
dotnet --list-runtimes

macOSやLinuxでは次のように確認します。

Bash
which -a dotnet
dotnet --info

インストールが破損している場合は、該当する.NET Runtimeを公式インストーラーで修復または再インストールします。自己完結型アプリの場合は、hostfxr.dllをインターネット上の非公式サイトから単体で取得せず、配布元からアプリ一式を再取得してください。

7-4. ランタイムのバージョン違いで起動しない

.NET 8向けアプリに対して.NET 10だけをインストールしても、アプリの設定によっては起動できません。また、プレビュー版と正式版の違いによって起動しないこともあります。

次の順番で確認しましょう。

  1. runtimeconfig.jsonのバージョンを確認する

  2. dotnet --list-runtimesを実行する

  3. 必要なメジャーバージョンがあるか確認する

  4. 同じメジャーバージョンの最新パッチを導入する

  5. アプリの対応.NETバージョンを配布元に確認する

ロールフォワード設定を変更して上位バージョンで動かす方法もありますが、想定外の動作が発生する可能性があります。一般利用者は、設定変更よりも指定されたバージョンをインストールする方が安全です。Microsoft Learn

7-5. 32bit・64bitの違いで起動しない

64bit版Windowsへx64ランタイムを入れていても、アプリが32bit専用の場合はx86ランタイムが必要になることがあります。

エラー画面のArchitecture欄を確認してください。

Architecture: x86
Architecture: x64
Architecture: arm64

Windowsで複数のdotnetが存在するか調べるには、次のコマンドを実行します。

PowerShell
where.exe dotnet

例えば次の2つが表示される場合、x64版とx86版が共存しています。

C:\Program Files\dotnet\dotnet.exe
C:\Program Files (x86)\dotnet\dotnet.exe

x64版を使用したいのにProgram Files (x86)側が先に呼び出される場合は、環境変数PATHの順序を見直します。MicrosoftのWindows向けドキュメントでも、x86とx64の両方を導入した環境ではPATHの優先順位による競合が案内されています。Microsoft Learn

7-6. PATHが通っておらずdotnetコマンドが使えない

ターミナルで次のように表示される場合は、PATHが設定されていない可能性があります。

'dotnet' is not recognized as an internal or external command

または次のように表示されます。

dotnet: command not found

Windowsの標準的なインストール先は、通常次の場所です。

C:\Program Files\dotnet\

手動展開した場合は、展開先をDOTNET_ROOTとPATHへ追加します。

PowerShellで現在の検索結果を確認するには、次のコマンドを使用します。

PowerShell
Get-Command dotnet -All

macOSやLinuxでは、次のコマンドを使用します。

Bash
which -a dotnet
echo $PATH

PATHを変更した後は、開いているターミナルやVisual Studio Codeを一度終了し、再起動してください。

7-7. インストール済みなのにアプリが起動しない場合の確認手順

ランタイムをインストール済みなのに起動できない場合は、次の順序で切り分けると効率的です。

最初に、エラーメッセージのFramework、Version、Architectureを記録します。

次に、ランタイム一覧を確認します。

Bash
dotnet --list-runtimes

環境全体の情報も確認します。

Bash
dotnet --info

続いて、実際に呼ばれているdotnetを確認します。

Windows:

PowerShell
where.exe dotnet

macOS・Linux:

Bash
which -a dotnet

さらに、アプリのフォルダーにあるruntimeconfig.jsonを確認し、要求バージョンと導入済みバージョンを比較します。

問題が残る場合は、次の点も確認してください。

  • RuntimeとDesktop Runtimeを間違えていないか

  • x86とx64を間違えていないか

  • アプリのファイルが欠けていないか

  • OSが対象バージョンの.NETに対応しているか

  • セキュリティソフトがファイルを隔離していないか

  • アプリに必要なネイティブライブラリが不足していないか

  • インストール後にPCやサービスを再起動したか

  • アプリ配布元が指定する追加コンポーネントを導入したか

最後に、該当ランタイムを修復または再インストールし、それでも解消しなければイベントビューアーやアプリのログを確認します。

8. C#ランタイムを使うときの注意点

8-1. 公式サイトからダウンロードする

.NET RuntimeやSDKは、Microsoft公式サイトまたはOSの信頼できるパッケージリポジトリから入手してください。

非公式のダウンロードサイトからインストーラーやDLLを取得すると、古いバージョン、改変済みファイル、マルウェアなどが含まれている可能性があります。

特にhostfxr.dllなどのDLLが不足している場合でも、DLL単体を配布する非公式サイトからダウンロードしてはいけません。公式インストーラーによる修復、再インストール、またはアプリ一式の再取得で対応します。

8-2. サポート期限が切れたバージョンは避ける

サポートが終了した.NETには、新しいセキュリティ更新や不具合修正が提供されません。新規システムでは、サポート中のLTS版を優先してください。

2026年6月19日時点でサポートされている主なバージョンは、.NET 10、.NET 9、.NET 8です。ただし、.NET 9と.NET 8はどちらも2026年11月10日にサポート終了予定であるため、新規の長期運用システムでは.NET 10 LTSを検討するのが現実的です。Microsoft+1

古いアプリを動かすためにサポート終了版が必要な場合は、ネットワーク分離、アクセス制限、移行計画の策定など、追加のリスク対策が必要です。

8-3. 複数バージョンを共存させるときの注意点

.NETの複数メジャーバージョンは共存できます。ただし、次のような問題には注意してください。

  • x86とx64のPATH競合

  • global.jsonによるSDK固定

  • Visual Studioが対応していないSDK

  • 手動展開版とインストーラー版の混在

  • Linuxの複数リポジトリによる競合

  • 不要なバージョンを削除したことによる既存アプリの停止

開発環境では、次のコマンドでSDKとランタイムの状態を定期的に確認するとよいでしょう。

Bash
dotnet --list-sdks
dotnet --list-runtimes
dotnet --info

8-4. セキュリティ更新を定期的に適用する

.NETは、サポート期間中にパッチが継続的に提供されます。OSの自動更新だけに依存せず、自社の導入方式に合わせて.NETの更新状況を管理してください。

特にWebサーバーや外部公開サービスでは、既知の脆弱性を放置しないよう、次の流れを整備します。

  1. 更新情報を確認する

  2. 検証環境へ適用する

  3. アプリの起動や主要機能をテストする

  4. 本番環境へ適用する

  5. 適用後のバージョンを記録する

.NETのサポートを維持するには、対象リリースで提供されている最新パッチを適用し続ける必要があります。Microsoft

8-5. 企業・業務環境で導入する場合のポイント

企業環境では、利用者が各自でランタイムを導入するのではなく、管理部門がバージョンと配布方式を統一するのが安全です。

導入前に、次の項目を整理します。

  • 利用する.NETのメジャーバージョン

  • LTS・STSの選択

  • x86・x64・Arm64の対象

  • Runtime・Desktop Runtime・ASP.NET Core Runtimeの区分

  • サポート終了日

  • 更新方法と更新頻度

  • ロールバック手順

  • 依存する業務アプリの一覧

  • 検証環境と本番環境の構成

  • オフライン端末への配布方法

サーバーや端末が多い場合は、ソフトウェア配布ツール、構成管理ツール、WinGet、パッケージリポジトリなどを使って一元管理すると、未更新端末を減らせます。

9. C#ランタイムに関するよくある質問

9-1. C#ランタイムは無料で使える?

現在の.NET Runtimeと.NET SDKは、基本的に無料で利用できます。.NETはMicrosoftが中心となって開発するオープンソースのクロスプラットフォーム基盤です。個人の学習だけでなく、企業のアプリ開発や商用システムにも利用されています。Microsoft+1

ただし、Visual Studioなど周辺の開発製品には、利用者数や組織規模、用途によってライセンス条件が設定されているものがあります。ランタイムの利用条件と開発ツールの条件は分けて確認してください。

9-2. C#ランタイムだけで開発できる?

基本的には開発できません。.NET Runtimeは、ビルド済みアプリを実行するための環境です。

C#のソースコードをコンパイルし、プロジェクトをビルドするには.NET SDKが必要です。C#で開発する場合は、ランタイムではなくSDKをインストールしてください。

9-3. .NET SDKを入れればランタイムも入る?

はい。.NET SDKには、対応する通常の.NET RuntimeとASP.NET Core Runtimeが含まれます。そのため、同じバージョンの基本ランタイムを別途インストールする必要はありません。Microsoft Learn+1

ただし、Windows FormsやWPFの実行に必要なDesktop Runtimeの構成や、別のメジャーバージョンのランタイムが必要な場合は、追加導入が必要になることがあります。必ずdotnet --list-runtimesで実際の状態を確認してください。

9-4. 複数の.NETランタイムを入れても問題ない?

基本的に問題ありません。.NETは、異なるメジャーバージョンを共存させられる設計です。

例えば、同じPCに.NET 8と.NET 10をインストールし、それぞれを必要とするアプリを実行できます。x86版とx64版も共存できますが、コマンド操作時はPATHの優先順位に注意してください。

9-5. C#ランタイムを削除しても大丈夫?

そのランタイムを使用するアプリが存在しなければ削除できます。ただし、どのアプリが利用しているかをWindowsのアプリ一覧だけで判断するのは困難です。

削除前に、次の点を確認しましょう。

  • 業務ソフトの動作要件

  • アプリのruntimeconfig.json

  • インストール済みランタイム一覧

  • ベンダーのサポート情報

  • サーバー上で稼働しているサービス

  • バックアップや再インストール手段

判断できない場合は、ディスク容量に大きな問題がない限り、無理に削除しない方が安全です。

9-6. Visual StudioがなくてもC#アプリは実行できる?

はい。Visual Studioがなくても、必要な.NET RuntimeがインストールされていればC#アプリを実行できます。

一般利用者が完成済みアプリを使うだけなら、Visual Studioは不要です。アプリの種類に応じて、.NET Runtime、Desktop Runtime、ASP.NET Core Runtimeのいずれかを導入します。

また、自己完結型として配布されたアプリであれば、ランタイムを別途インストールせずに実行できる場合もあります。

まとめ

C#ランタイムとは、C#で作られたアプリケーションを実行するための環境です。現在のC#アプリでは、主に.NET Runtimeが使用されています。

実行するアプリの種類によって、必要な製品は異なります。

  • 一般的な.NETアプリの実行:.NET Runtime

  • C#アプリの開発:.NET SDK

  • Windows Forms・WPFアプリ:.NET Desktop Runtime

  • ASP.NET Coreアプリ:ASP.NET Core Runtime

  • 従来型Windowsアプリ:指定された.NET Framework

インストール時には、ランタイムの種類だけでなく、メジャーバージョンとx86・x64・Arm64の違いも確認してください。

エラーが発生した場合は、まず次のコマンドで環境を確認します。

Bash
dotnet --list-runtimes
dotnet --list-sdks
dotnet --info

「最新版が入っているから問題ない」と判断せず、アプリが要求するフレームワーク名、バージョン、アーキテクチャと照合することが、C#ランタイム関連の実行エラーを解決する最も確実な方法です。