.NET 6.0.25がアンインストールできない?dotnet –list-runtimesに残る原因と消し方(Windows/Visual Studio対応)

Windowsで「.NET 6.0.25 を削除したはずなのに dotnet --list-runtimes に残る」「同じ行が2回出る」という現象は、ランタイム本体がまだ残っているか、参照している dotnet が複数あって表示が重複しているケースが多いです。確実に消すための確認ポイントと手順をまとめます。

目次

症状:.NET 6.0.25 をアンインストールしたのに dotnet --list-runtimes に残る

ご質問の状況は、次のように「6.0.25 が残っている(しかも同じ行が2回出る)」状態です。

Microsoft.NETCore.App 6.0.25
Microsoft.WindowsDesktop.App 6.0.25

ここで大事なのは、dotnet --list-runtimes は「いま実行している dotnet が見つけたランタイムの実体」を列挙している、という点です。つまり、表示されるなら多くの場合そのバージョンのランタイム(フォルダーや登録情報)がまだ残っています。

まず押さえる:表示されている2つの意味(.NET Runtime と Windows Desktop Runtime)

dotnet --list-runtimes に出る代表的な項目は、用途が少し違います。今回出ている2つは、ざっくり言うと次の関係です。

表示名役割よく対応するインストール項目(例)残りやすい理由
Microsoft.NETCore.App 6.0.25.NETの基本ランタイム(コンソール/サービス等も含む).NET Runtime 6.0.25(x64 / x86 など)SDKやDesktop Runtime、Visual Studioなど別経路で残る
Microsoft.WindowsDesktop.App 6.0.25Windowsデスクトップ向け(WPF/WinForms 等)Windows Desktop Runtime 6.0.25(x64 / x86 など)Desktop Runtimeだけ消し忘れ、またはx86が残る

つまり「.NETを消したつもり」でも、実際には Runtime / Desktop Runtime / ASP.NET Core Runtime / SDK のどれを消したかで残り方が変わります。特に x64 と x86 が別項目で入っていると、片方だけ残って「消したのに残る」状態になりがちです。

最短で原因を切り分けるチェック(最初にここだけやる)

削除に入る前に、次の3点を確認すると迷いが減ります。コマンドは「コマンドプロンプト」でも「PowerShell」でも構いません。

チェック1:いま実行している dotnet はどれか(複数あるか)

まず「どの dotnet.exe を叩いているか」を確認します。複数出る場合、PATH が混在している可能性が高いです。

where dotnet

よくあるパターン:

  • C:\Program Files\dotnet\dotnet.exe(一般的なシステム全体のインストール)
  • C:\Program Files (x86)\dotnet\dotnet.exe(32bit版が入っている場合)
  • C:\Users\(ユーザー)\AppData\Local\Microsoft\dotnet\dotnet.exe(ユーザー単位の導入がある場合)

ここで複数出たら、「残っている」以前に参照先が複数で、表示や挙動がややこしくなります(後述の「2回表示」対策にも直結します)。

チェック2:6.0.25 の “場所” を見る

dotnet --list-runtimes は通常、各ランタイムのインストール場所も併記します。同じ 6.0.25 でも場所が違うなら、実体が複数(x64/x86、ユーザー/システム)という判断ができます。

dotnet --list-runtimes

表示例(イメージ):

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

チェック3:SDKが残っていないか

SDK が残っていると、関連ランタイムも残っている(または再導入される)ことがあります。開発PCなら特に確認します。

dotnet --list-sdks

結論:表示されるなら「多くの場合まだ残っている」ので、アンインストール経路を正しく踏む

ここからが本題です。削除の基本方針はシンプルで、インストールした方法に合わせてアンインストールすることです。

  • Windowsの「インストールされているアプリ」から、6.0.25 の該当コンポーネントを個別に削除
  • Visual Studio 由来なら、Visual Studio Installer 側で削除
  • 取りこぼしがある/確実にやりたいなら、公式の .NET Uninstall Tool でバージョン指定削除

Microsoft公式の案内として、SDK/ランタイムの削除手順と、.NET Uninstall Tool の利用が紹介されています(公式ドキュメント)。

手順1:Windowsの「インストールされているアプリ」から 6.0.25 を狙って消す

まずは王道の手順です。ここで消せるなら、それが一番安全で後腐れが少ないです。

削除対象を取り違えないコツ

「.NET」と一口に言っても、表示される項目が複数あります。6.0.25 を確実に消すには、名称だけでなく “バージョン” と “種類” を見て消すのがコツです。

アプリ一覧で探す名前の例対応しやすい --list-runtimes の表示消し忘れやすいポイント
.NET Runtime 6.0.25(x64 / x86)Microsoft.NETCore.App 6.0.25x86だけ残る/Runtimeを消したつもりでSDKが残る
Windows Desktop Runtime 6.0.25(x64 / x86)Microsoft.WindowsDesktop.App 6.0.25Desktop Runtimeだけ別項目で残る
ASP.NET Core Runtime 6.0.25Microsoft.AspNetCore.App 6.0.25Web系の実行環境として残りやすい
.NET SDK 6.0.25(SDKは dotnet --list-sdks 側)開発用。Visual Studioから入っていることが多い

具体的な操作手順

  1. Windowsの設定を開き、「アプリ」→「インストールされているアプリ(Apps & features)」へ進む
  2. 検索欄に .net(または runtime / desktop / asp.net / sdk)を入れて絞り込む
  3. 一覧から 6.0.25 のものを探し、Runtime / Desktop Runtime / ASP.NET Core Runtime / SDK を必要に応じてアンインストール
  4. アンインストール後、いったんターミナルを閉じて開き直し、dotnet --list-runtimes で再確認

「Visual Studio 由来」と出る場合の注意

アプリ一覧に “Visual Studio” っぽい表示があったり、開発PCで Visual Studio を使っている場合は、Visual Studio Installer 側が管理しているコンポーネントとして入っていることがあります。この場合、Windows設定側から無理に消そうとすると中途半端になりやすいので、基本は Visual Studio Installer で「変更(Modify)」→「個別のコンポーネント」や「ワークロード」を見て、該当する .NET 関連コンポーネントを調整します(公式ドキュメントでも “Visual Studio 由来のものは VS 側で” という趣旨が案内されています)。

手順2:公式の .NET Uninstall Tool で 6.0.25 をバージョン指定削除(推奨)

「設定から消したのに残る」「何が残っているか追いかけるのが面倒」「確実に 6.0.25 だけを落としたい」というときは、.NET Uninstall Tool(公式のアンインストールツール)が一番確実です。

Microsoft Learn では、不要になった SDK/ランタイムを削除する手段として .NET Uninstall Tool が案内されています。

Microsoft Learn: Remove the .NET runtime and SDK

基本フロー(一覧 → 確認 → 削除)

まず一覧を出して、6.0.25 が残っていることを確認します。

dotnet-core-uninstall list --runtime

次に、6.0.25 をバージョン指定で削除します(例)。

dotnet-core-uninstall remove --runtime 6.0.25 -y

この remove コマンドの詳細や注意点は、公式ドキュメントにまとまっています。

Microsoft Learn: dotnet-core-uninstall remove command

実務でハマりやすいポイント(必ず読んでから実行)

  • 管理者権限が必要になることがあります。うまく削除できない場合は、管理者としてターミナルを開き直して実行します。
  • 環境によっては Visual Studio が必要と判断したものは既定で残す挙動になります。開発環境を壊さないための安全策です。
  • --force のような強制オプションが用意されていますが、開発環境や既存アプリが動かなくなる可能性があるため、安易に使わない方が安全です。

削除後の確認(“残っているか” を確実に判定する)

削除後は、必ず次の順番で確認します。

  1. ターミナルを閉じて開き直す(PATHの反映のため)
  2. dotnet --list-runtimes を実行し、6.0.25 が消えたか見る
  3. まだ残るなら where dotnet を再実行し、別の dotnet.exe を叩いていないか確認する

手順3:「同じ行が2回表示される」問題の原因と直し方

dotnet --info や dotnet --list-runtimes が 同じものを2回表示する現象は、必ずしも「ランタイムが2つ入っている」わけではありません。よくある原因として、環境変数 Path に同じパスが重複して入っている(大文字小文字の違い等で重複扱いになる)ケースが知られています。

実際に、c:\program files\dotnet と C:\Program Files\dotnet のような表記ゆれが原因で二重表示になるケースが報告されています。

GitHub: dotnet –info shows runtimes and sdks twice(Issue #10160)

重複表示の改善手順(安全な順)

  1. where dotnet を実行し、dotnet.exe が複数あるか確認する
  2. 複数ある場合は、どれを使うべきか決める(一般的には C:\Program Files\dotnet\dotnet.exe が基準になりやすい)
  3. Windowsの環境変数編集で、Path の中の ...\dotnet が重複していないかを確認する
  4. 大文字小文字だけ違う同一パスや、明らかに不要な古いパスがあれば整理する
  5. ターミナルを開き直して dotnet --list-runtimes を再確認する

「2回表示」=実害がないこともあるが、削除確認では邪魔になる

二重表示は、環境によっては見た目だけの問題で実害が出ないこともあります。ただし今回の目的は「削除したかどうかを確認する」ことなので、ランタイム実体の削除(前章の手順)と合わせて、表示の混乱要因(Path/複数dotnet)も整えておくと確実です。

手順4:それでも 6.0.25 が残るときの“よくある落とし穴”と対処

ここまでやっても残る場合、原因はだいたい次のどれかです。該当しそうなところから潰してください。

状況ありがちな原因対処
アプリ一覧に 6.0.25 が見当たらないのに --list-runtimes には出る別経路(Visual Studio、ユーザー単位、x86/x64)のインストールが残っているwhere dotnet と --list-runtimes の “パス” を見て、該当経路のアンインストールを探す/Uninstall Toolを使う
Microsoft.NETCore.App は消えたが Microsoft.WindowsDesktop.App が残るDesktop Runtime が別項目で残っている、またはx86だけ残っているアプリ一覧で「Windows Desktop Runtime 6.0.25(x86/x64)」を探して削除/Uninstall Toolで指定削除
削除したのに、再起動/更新後に戻るVisual Studio や別インストーラーが要件として再導入しているVS Installer側のワークロードやコンポーネントを確認。必要ならVSの更新方針を見直す
同じ行が2回出て、どっちが本体かわからないPathの重複(表記ゆれ含む)環境変数Path整理 → ターミナル開き直し → 再確認

手作業でフォルダー削除が非推奨な理由(やるなら“最後の最後”)

「C:\Program Files\dotnet を消せばいいのでは?」と思いがちですが、これは基本的におすすめしません。理由は次の通りです。

  • グローバルツールや他バージョンのランタイム/SDKも同居していることがあり、まとめて壊れる可能性がある
  • Visual Studio と連携している環境だと、修復が面倒になりがち
  • アンインストール情報が残って「インストールされているのに実体がない」中途半端な状態になりやすい

基本は、公式手順に沿って「インストールした方法に合わせて」アンインストールするのが安全です(公式ドキュメントでも、不要なSDK/ランタイムの削除手段として正規の手順が案内されています)。

Microsoft Learn: Remove the .NET runtime and SDK

実践:迷わないための“おすすめ手順”まとめ(この順にやると失敗しにくい)

最終的に「6.0.25 を確実に消したい」場合、次の順が分かりやすく、作業も戻しやすいです。

順番やること目的確認コマンド
1where dotnet で参照先を確認複数dotnet/Path混在を把握するwhere dotnet
2dotnet --list-runtimes のパスを確認6.0.25 の実体がどこにあるか特定dotnet --list-runtimes
3Windowsのアプリ一覧で 6.0.25 を狙って削除正規のアンインストールで安全に消すdotnet --list-runtimes
4Visual Studio 由来なら VS Installer で調整再導入や依存関係のトラブルを避ける(再度)dotnet --list-runtimes
5.NET Uninstall Tool で 6.0.25 を指定削除取りこぼしをなくす(推奨)dotnet-core-uninstall list --runtime
dotnet-core-uninstall remove --runtime 6.0.25 -y
6Path の重複(表記ゆれ)を整理二重表示を防ぎ、確認を簡単にするdotnet --list-runtimes

よくある質問

「.NET 6.0.25 を消したらアプリが動かなくならない?」

可能性はあります。特に業務アプリや社内ツールが .NET 6 ランタイムに依存している場合、ランタイムを消すと起動できなくなります。削除前に、該当PCで動かしているアプリ(バッチ、サービス、クライアントソフト、ゲーム、ツール等)に影響がないか確認してください。開発PCなら、対象プロジェクトが必要とするSDK/ランタイムのバージョンも見直すのが安全です。

「6.0.25 だけ消して、6.0 系の別バージョンは残していい?」

バージョンを分けて共存できる設計なので、特定のパッチだけ消す運用自体はあり得ます。ただし、実運用としては “必要なバージョンだけ残す” が目的なら、公式ツールで対象バージョンを指定削除し、アプリ側が求めるバージョンに合わせて整理するのが安全です。

「Uninstall Tool の --force は使っていい?」

「どうしても消せない」「実験環境で完全に掃除したい」などの事情がない限り、慎重に扱うのが無難です。特に Visual Studio が依存しているものを強制削除すると、開発環境の修復(再インストールや修復インストール)が必要になることがあります。まずは list で対象を把握し、通常の remove を優先してください。

まとめ:.NET 6.0.25 が dotnet --list-runtimes に残るなら、まず“残っている実体”を正規手順で消す

Windowsの「アプリ一覧」から消したつもりでも、.NET はコンポーネントが分かれていたり、x64/x86、Visual Studio 由来、ユーザー単位導入などで “消したつもり”が起きやすいです。

確実に 6.0.25 を消すなら、(1) アプリ一覧で 6.0.25 の Runtime/Desktop Runtime を取り違えずに削除し、(2) 必要に応じて Visual Studio Installer を確認し、(3) 最後は公式の .NET Uninstall Tool でバージョン指定削除、という流れが最短です。あわせて Path の重複を整理すれば、「同じ行が2回出る」問題も改善しやすくなります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次