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