この記事の要点
- Solution Explorer の Remove = ソリューションから外すだけ(ファイル本体は残る)
- Delete(VS 上)= ソリューションから外し、ファイルもごみ箱へ移動
- 完全に消すには VS を閉じてエクスプローラ削除 + .sln 編集 が確実
- Git 管理下なら
git rm -r MyProject/でリポジトリからも削除 - 他プロジェクトから参照されていると ビルドエラーになる → References を先にクリーンアップ
- 消したのに復活する場合は.vs/ キャッシュとVS の最近のプロジェクト MRUを消す
1Visual Studio プロジェクト削除の 3 つの選択肢
| 操作 | 動作 | 用途 |
|---|---|---|
| Solution Explorer → 右クリック → Remove | ソリューションから外す(ファイル本体は残る) | 後で別ソリューションで使う |
| Solution Explorer → 右クリック → Delete | ファイルごとごみ箱へ | 完全に捨てたい |
| VS を閉じてエクスプローラ削除 | 強制削除(.vs / .suo もまとめて消せる) | VS が消せないと言うとき |
2標準手順: Solution Explorer から削除
- Solution Explorer でプロジェクトを右クリック
- Remove(ソリューションから外す) or Delete(完全削除)を選択
- Remove のショートカット:
Deleteキー - Delete のショートカット:
Shift + Delete
- Remove のショートカット:
- 確認ダイアログで OK
Remove と Delete の違い:
Solution: MyApp.sln
├── ProjectA (削除したい) ← .sln から行を消す + 物理ファイルどうするか
├── ProjectB
└── ProjectC
Remove:
- .sln から ProjectA の行を削除
- C:\src\MyApp\ProjectA\ フォルダはそのまま残る
- 別ソリューションで再利用可能
Delete:
- .sln から ProjectA の行を削除
- C:\src\MyApp\ProjectA\ フォルダをごみ箱へ
- 復元はごみ箱から
3削除前にやるべき: 参照クリーンアップ
プロジェクト B が プロジェクト A を参照していたら、A を消すと B がビルドエラーになります。先に参照を外しておきます。
1. Solution Explorer でプロジェクト B を展開
2. References / Dependencies を展開
3. ProjectA への参照を右クリック → Remove
4. 必要なら ProjectA の機能をローカルコピーしておく
5. その後 ProjectA を削除
4VS を閉じてエクスプローラから完全削除
# 1) Visual Studio を完全終了
Get-Process devenv -ErrorAction SilentlyContinue | Stop-Process -Force
# 2) プロジェクトフォルダを削除
$proj = 'C:\src\MyApp\ProjectA'
Remove-Item $proj -Recurse -Force
# 3) .sln から該当行を削除(テキストエディタで開く)
# Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectA", "ProjectA\ProjectA.csproj", "{...}"
# EndProject
# この 2 行を削除
# Global セクションの GUID 参照も削除
# Project("{...}").Debug|Any CPU.ActiveCfg = ...
# Project("{...}").Debug|Any CPU.Build.0 = ...
# (該当 GUID の行をすべて削除)
# 4) IDE キャッシュもクリア
Remove-Item C:\src\MyApp\.vs -Recurse -Force -ErrorAction SilentlyContinue
5.sln ファイルの構造(手動編集用)
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-...}") = "ProjectA", "ProjectA\ProjectA.csproj", "{AAA-GUID-AAA}"
EndProject
Project("{FAE04EC0-...}") = "ProjectB", "ProjectB\ProjectB.csproj", "{BBB-GUID-BBB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{AAA-GUID-AAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU ← ProjectA 削除時はこの行も消す
{AAA-GUID-AAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BBB-GUID-BBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
EndGlobalSection
EndGlobal
6Git 管理下のプロジェクト削除
# Visual Studio から Delete した後でも Git は変更を追跡する
git status
# deleted: ProjectA/...
# modified: MyApp.sln
# まとめてコミット
git add -A
git commit -m "Remove ProjectA from solution"
# 別解: git rm でフォルダごと削除(VS Delete を介さず)
git rm -r ProjectA/
# .sln は手動で編集してからコミット
# 履歴から完全に消したい場合(重要: 公開リポでは要相談)
git filter-repo --path ProjectA --invert-paths
# または BFG Repo-Cleaner
java -jar bfg.jar --delete-folders ProjectA
git push --force-with-lease
7削除したのに残るパターン
| 症状 | 原因 | 対処 |
|---|---|---|
| VS 起動時にエラー: project not found | .sln にまだ参照が残っている | .sln をテキスト編集 |
| 最近のプロジェクト一覧に残る | MRU が保持 | 「最近のプロジェクト」右クリック → 削除 |
| IntelliSense にゴーストが出る | .vs/ キャッシュ | .vs フォルダ削除 |
| NuGet キャッシュに残る | packages.lock.json | dotnet nuget locals all --clear |
| ビルドサーバーに残る | CI キャッシュ | CI のキャッシュをクリア |
8FAQ
Q: Unload Project と Remove の違い
A: Unload は一時的に読み込まない(ファイルは残るし .sln 内の参照も残る)。Remove は .sln から完全に外す。デバッグや一時的なビルド時短に Unload を使う。
Q: 削除後にビルドが通らない
A: 他プロジェクトの References に残骸あり。dotnet build -v normal でエラー詳細を確認 → 参照削除 → dotnet restore。
Q: フォルダだけ消した後、復元したい
A: ごみ箱にあれば戻す。Git 管理下なら git checkout HEAD -- ProjectA。
子ページ
子ページはありません
同階層のページ
- プロジェクトの削除方法
- Blueprintでプロジェクト全体で共有できるStatic定数の定義方法
- プロジェクトを多言語化する方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15