| この記事の要点 |
|
.suo ファイルの正体
.suo は Solution User Options の略で、Visual Studio がユーザー一人ひとり / マシン一台一台に固有の設定を保存するファイルです。MyApp.sln に対して MyApp.suo がペアで作られます(ただし VS 2017 以降は .vs/ フォルダ内に隠されている)。
| VS バージョン | .suo の場所 |
|---|---|
| VS 2010 / 2012 | ソリューションと同じフォルダの MyApp.suo(隠しファイル) |
| VS 2013 | 同上 |
| VS 2015+ | .vs\MyApp\v14\.suo |
| VS 2017 | .vs\MyApp\v15\.suo |
| VS 2019 | .vs\MyApp\v16\.suo |
| VS 2022 | .vs\MyApp\v17\.suo |
何が保存されるか
- 開いていたファイルのリスト(次回起動時に復元)
- ブレークポイントの位置・条件・有効/無効
- デバッグウォッチ式
- ウィンドウレイアウト(Solution Explorer / Output / Error List のサイズと位置)
- ソリューション内の展開/折りたたみ状態
- スタートアッププロジェクトの選択
- 最近のファイル
- ブックマーク
ポイントは「ソースコードに影響しない設定」だけが入っていることです。プロジェクトのコンパイル設定や参照、コードはすべて .csproj / .sln 側に書かれます。
.gitignore に必須な理由
.suo はチームで共有するべきではありません。共有すると次のような事故が起こります:
- あなたが開いていたファイルが、別の開発者が pull した瞬間に開かれる
- ブレークポイントが大量に増殖する
- ウィンドウレイアウトが他人の好みに変わる
- マシン依存パスが含まれてマージコンフリクト連発
- そもそもバイナリなので Git では差分を扱いにくい
標準の .gitignore(Visual Studio 用)
# Visual Studio ユーザー固有
*.suo
*.user
*.userosscache
*.sln.docstates
.vs/
# ビルド出力
[Bb]in/
[Oo]bj/
# NuGet
*.nupkg
packages/
**/[Pp]ackages/*
!**/[Pp]ackages/build/
# Rider / ReSharper
.idea/
_ReSharper*/
# 自動生成
TestResults/
[Dd]ebug/
[Rr]elease/
GitHub 公式の VisualStudio.gitignore が最も網羅的でお勧めです。
.suo が壊れたら削除して OK
.suo に依存する重要情報はありません(あくまでユーザーの使い勝手設定)。VS が起動時にクラッシュ・固まる・空のソリューションが開くなど不審な挙動があれば、.suo を削除して再起動すれば再生成されます。
# VS を完全終了
Get-Process devenv -ErrorAction SilentlyContinue | Stop-Process -Force
# プロジェクトのルートで
cd C:\src\MyApp
# 古い形式の .suo
Get-ChildItem -Force *.suo
Remove-Item *.suo -Force
# 新形式(VS 2015+)
Remove-Item .vs -Recurse -Force
# VS を起動 → 再生成される
.vs/ フォルダの中身
VS 2015 以降、.suo はもちろん、他のキャッシュも .vs/ 配下に集約されました:
.vs/
└── MyApp/
├── v17/
│ ├── .suo ← ユーザー設定
│ ├── DocumentLayout.json ← レイアウト
│ ├── DocumentLayout.backup.json
│ └── Browse.VC.db ← C++ IntelliSense
├── config/
│ └── applicationhost.config ← IIS Express 設定
└── FileContentIndex/
└── *.vsidx ← 検索インデックス
.suo の中を覗くことはできるか
バイナリ形式(CFB - Compound File Binary, Microsoft Office と同形式)なので、通常のテキストエディタでは読めません。中身を覗きたい場合は:
strings MyApp.suoで文字列だけ抽出(Unix の strings コマンド or Sysinternals)- OLE Compound Document Viewer 等の専用ツール
- でも普通は読む必要なし。困ったら削除でリセット
FAQ
Q: .suo を共有したいときは?
A: 基本的にはやめましょう。どうしても共通のウィンドウレイアウトを共有したい場合は、VS の「ツール」→「設定のインポートとエクスポート」を使います。
Q: .suo を間違って Git にコミットしてしまった
A: git rm --cached *.suo → .gitignore に追記 → コミット。履歴から消したい場合は git filter-repo。
Q: ブレークポイントが復元されない
A: .suo が削除された / 別マシンで開いた可能性。VS 2022 では「ブレークポイントをチームで共有」する別機能(Live Share)あり。
📚 関連: ファイル形式・拡張子セクション — 主要なファイル拡張子・形式を体系的に解説。ファイル拡張子とは(概論)
子ページはありません
人気ページ
- 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・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09