SUO ファイル形式とは?
.suo ファイルは、Visual Studio ソリューションの個人用 IDE 状態を保存します。これはソリューション自体ではなく、特定のコンピュータ上の特定のユーザーに属する設定です。ソリューションを開くと、Visual Studio はエディタのレイアウト、開いているドキュメントとカーソルの位置、アクティブなビルド構成(Debug または Release)、ブレークポイントの場所、検索/置換の履歴、およびツール ウィンドウの配置を、.sln ソリューション ファイルと同じ場所にある .suo ファイルに記録します。
このフォーマットは、バイナリの OLE2 Compound File Binary (CFBF) 構造化ストレージ コンテナであり、レガシーな .doc や .xls ファイルで使用されているものと同じコンテナです。インストールされている各 Visual Studio パッケージは、状態を保持するために、この複合ファイル内に独自の名前付きストリームを書き込みます。8 バイトのマジック シグネチャ D0 CF 11 E0 A1 B1 1A E1 はすべての OLE2/CFBF ファイルで共通ですが、SolutionConfiguration や TaskListOptions といった内部ストリーム名によって、それが .suo であると識別されます。
.suo ファイルはユーザーごと、マシンごとのものであるため、バージョン管理にコミットしてはいけません。.gitignore に *.suo を追加してください。IDE の動作が不安定な場合(ビルド構成が正しくない、ブレークポイントが表示されないなど)、.suo を削除することが標準的なトラブルシューティングの第一歩です。Visual Studio は次回の起動時に自動的に再作成します。このファイルはファイルシステム上で「非表示」属性が設定されています。
Visual Studio 2015 以降、Microsoft はこの状態をソリューションの隣にある非表示の .vs\ フォルダに移行し始めました。Visual Studio 2017 以降では、単一の .suo ファイルは作成されなくなり、同等のデータは .vs\{solution-name}\v15\ 内に細分化された JSON およびバイナリ ファイルとして保存されます。VS 2017 以降で開かれたプロジェクトにおいて、.suo 拡張子は事実上レガシーなものとなっています。
セキュリティと安全性
リスク: LOWSUO ファイルは受動的なバイナリ データ ストアであり、それ自体に実行リスクはありません。ただし、ローカル マシン上のファイル パス、プロジェクト構造、拡張機能の設定など、開発者固有のデータが漏洩する可能性があります。そのため、これらを公開しないでください(*.suo を .gitignore に追加)。悪意を持って作成された CFBF ファイルは、理論上 Visual Studio の CFBF パーサーのバグを悪用する可能性がありますが、未知のソースから受け取った .suo ファイルにおけるこのリスクは非常に理論的なものです。
形式の詳細
概要SUO ファイルを開くプログラム
技術的詳細
詳細仕様| コンテナ フォーマット | OLE2 Compound File Binary Format (CFBF) 構造化ストレージ |
| マジック バイト | オフセット 0 に D0 CF 11 E0 A1 B1 1A E1 (共通の OLE2 シグネチャ) |
| エンコーディング | バイナリ、リトルエンディアン |
| 内部ストリーム | Visual Studio パッケージごとの名前付き CFBF ストリーム(GUID 由来の名前で識別) |
| 保存される状態 | 開いているドキュメントとカーソル位置、エディタ レイアウト、ブレークポイント、アクティブなビルド構成、検索/置換履歴、拡張機能固有の設定 |
| 一般的なファイル サイズ | 5 KB - 5 MB(開いているファイル数、ブレークポイント、拡張機能の数に応じて増加) |
| ファイルシステム属性 | 非表示としてマーク。ソリューション ルートの .sln ファイルと同じ場所に保存 |
| ソース管理 | VCS から除外する必要あり。*.suo を .gitignore に追加 |
| 自動再作成 | 削除されると Visual Studio によって自動的に再生成。削除は安全なトラブルシューティング手順 |
| CFBF セクタ サイズ | 512 バイト セクタ (CFBF v3 フォーマット) |
| ストリームの分離 | インストールされている各 VS パッケージまたは拡張機能が、独自の分離された名前付きストリームを書き込む |
| レガシー ステータス | 非表示の .vs フォルダによって置き換え (VS 2015+)。VS 2017 以降では作成されない |
| 関連 OS | Windows |
| 破損からの回復 | .suo を削除してソリューションを再度開くことが、IDE 状態の破損に対する標準的な最初のステップ |
| リリース日 | 1997 (Visual Studio 97 / Visual Studio 5.0) |
| 最新バージョン | Visual Studio 2015 and earlier: binary CFBF .suo; Visual Studio 2015 also introduced a hidden .vs\ folder variant. Visual Studio 2017+ replaced the monolithic .suo with the hidden .vs\{solution}\v15\ directory containing granular JSON/binary files - the .suo extension is essentially legacy as of 2017. |
| 仕様書 | learn.microsoft.com |
SUO の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。SUO ファイルについて最初の質問をしてみましょう。
よくある質問
.suo ファイルを Git にコミットすべきですか?
.gitignore に *.suo を追加してください。これには開発者ごとに異なるマシン固有およびユーザー固有の IDE 状態が含まれており、マージ競合の原因になります。.suo ファイルを削除しても安全ですか?
なぜ .suo ファイルがこんなに大きいのですか?
新しい Visual Studio バージョンでは、.suo の代わりに何が使われていますか?
.vs\{solution}\v{version}\ フォルダ内に、他のユーザー状態ファイルと共に名前を変更した .suo を書き込みます。.vs\ フォルダも .gitignore に含める必要があります。