最新の .NET 10 を入れたのに「.NET をインストールしてください」と怒られる理由と解決策

「.NET 10 をインストールしたし、VSCode でのコンパイルも通った。いざ実行!」 ……と思った矢先、無慈悲な英語のメッセージボックスが表示されてアプリが起動しないことがあります。

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

メッセージをよく見ると「10.0.7 は見つかったけど、8.0.0 が必要だ」と書かれています。最新版を入れたのになぜ古いバージョンを求められるのか、その理由と対処法を解説します。


1. なぜエラーが出るのか?(「SDK」と「ランタイム」の違い)

一番の理由は、「.NET は最新版を入れても、古いバージョンの代わりにはならない」 という特性があるからです。

  • SDK (Software Development Kit): 開発用の道具箱。最新の .NET 10 SDK があれば、古い .NET 8 向けのプログラムを「作る(コンパイルする)」ことは可能です。

  • Runtime (ランタイム): 実行用のエンジン。プログラムを「動かす」には、そのプログラムがターゲットとしているバージョンのランタイムがピンポイントで必要です。

今回のケースでは、プログラム(CalibrationSystem.exe)が「私は .NET 8.0 用に作られたので、.NET 8.0 ランタイムで動かしてください」と要求しているのに対し、PCには「.NET 10.0 ランタイム」しか入っていないため、エラーになっています。


2. エラーメッセージの読み解き方

メッセージには非常に重要なヒントが書かれています。

  • Framework: 'Microsoft.NETCore.App', version '8.0.0': 👉 「.NET 8.0.0 の実行エンジンが必要です」という意味。

  • The following frameworks were found: 10.0.7: 👉 「PCには 10.0.7 しか見当たらないよ」という意味。

  • The following frameworks for other architectures were found: x86...: 👉 「32bit(x86)版の .NET 8 ならあるけど、今動かそうとしているのは 64bit(x64)版だから使えないよ」という意味。


3. 解決策はズバリこれ!

この問題を解決するには、以下のいずれかを行う必要があります。

方法 A:.NET 8.0 ランタイムをインストールする(確実)

エラーメッセージに表示されているダウンロードURLをクリックするか、公式ページから 「.NET 8.0 Desktop Runtime (x64)」 をダウンロードしてインストールします。

これで、PC内に 10 と 8 が共存し、アプリが動くようになります。

方法 B:アプリのターゲットを .NET 10 に変更する(推奨)

せっかく .NET 10 を入れたのですから、アプリ自体を 10 向けに作り直すのも手です。 csproj ファイルを開き、以下を書き換えてから再ビルドしてください。

 

 
<!-- 修正前 -->
<TargetFramework>net8.0</TargetFramework>

<!-- 修正後 -->
<TargetFramework>net10.0</TargetFramework>

 

保存後、VSCodeでコンパイルし直せば、そのアプリは .NET 10 ランタイムで動くようになります。


4. 注意:x64 と x86 の混同に注意

メッセージの後半を見ると、32bit(x86)版の .NET 8 はインストールされているようですが、現在の開発環境は 64bit(x64) です。 最近の Windows は 64bit が標準ですので、必ず「x64」版のランタイムをインストールするようにしましょう。


まとめ

.NET の世界では 「大(10)は小(8)を兼ねない」 というルールがあります。

  • 動かしたいだけなら: 求められているバージョンのランタイムを追加する。

  • 開発環境を最新に揃えたいなら: csproj のターゲットを net10.0 に書き換える。

特に VS2017 Express などと共存させている場合は、バージョン管理が複雑になりがちです。今自分が「どのバージョンに向けて」アプリを作っているのかを意識すると、こうしたトラブルをスマートに回避できますよ!