Co to jest format pliku SUO?
Plik .suo przechowuje osobisty stan IDE dla rozwiązania Visual Studio - ustawienia należące do konkretnego użytkownika na konkretnej maszynie, a nie do samego rozwiązania. Po otwarciu rozwiązania Visual Studio zapisuje w pliku .suo (znajdującym się obok pliku rozwiązania .sln) układ edytora, otwarte dokumenty, pozycję kursora, aktywną konfigurację kompilacji (Debug lub Release), lokalizacje punktów przerwania, historię wyszukiwania/zamiany oraz rozmieszczenie okien narzędziowych.
Format ten to binarny kontener OLE2 Compound File Binary (CFBF) - ten sam, który był używany przez starsze pliki .doc i .xls. Każdy zainstalowany pakiet Visual Studio zapisuje własny nazwany strumień (stream) wewnątrz pliku złożonego, aby zachować swój stan. Ośmiobajtowa sygnatura magiczna D0 CF 11 E0 A1 B1 1A E1 jest wspólna dla wszystkich plików OLE2/CFBF; wewnętrzne nazwy strumieni, takie jak SolutionConfiguration i TaskListOptions, identyfikują go jako .suo.
Ponieważ pliki .suo są przypisane do użytkownika i maszyny, nigdy nie powinny trafiać do systemu kontroli wersji - należy dodać *.suo do pliku .gitignore. Jeśli IDE zachowuje się nieprawidłowo (błędne konfiguracje kompilacji, brakujące punkty przerwania), usunięcie pliku .suo jest standardowym pierwszym krokiem naprawczym; Visual Studio odtworzy go automatycznie przy następnym uruchomieniu. Plik jest oznaczony w systemie plików jako ukryty.
Począwszy od Visual Studio 2015, Microsoft zaczął przenosić ten stan do ukrytego folderu .vs\ obok rozwiązania. Visual Studio 2017 i nowsze nie tworzą już monolitycznego pliku .suo; odpowiadające mu dane znajdują się w .vs\{solution-name}\v15\ w formie rozproszonych plików JSON i binarnych. Rozszerzenie .suo jest w praktyce zaszłością dla projektów otwieranych w VS 2017 lub nowszym.
Bezpieczeństwo
RYZYKO: LOWPliki SUO są pasywnymi magazynami danych binarnych - same w sobie nie stwarzają ryzyka wykonania kodu. Mogą jednak ujawniać dane specyficzne dla programisty: ścieżki plików na lokalnej maszynie, strukturę projektu i konfiguracje rozszerzeń. Z tego powodu nie powinny być udostępniane publicznie (dodaj *.suo do .gitignore). Złośliwie sformatowany plik CFBF mógłby teoretycznie wykorzystać błąd w parserze CFBF w Visual Studio, ale jest to bardzo teoretyczne ryzyko w przypadku plików .suo otrzymanych z nieznanych źródeł.
Szczegóły formatu
w pigułceProgramy otwierające pliki SUO
Szczegóły techniczne
specyfikacja| Format kontenera | OLE2 Compound File Binary Format (CFBF) structured storage |
| Magiczne bajty | D0 CF 11 E0 A1 B1 1A E1 pod offsetem 0 (wspólna sygnatura OLE2) |
| Kodowanie | Binarne, little-endian |
| Strumienie wewnętrzne | Nazwane strumienie CFBF na pakiet Visual Studio, identyfikowane przez nazwy pochodzące od GUID |
| Przechowywany stan | Otwarte dokumenty i pozycje kursora, układ edytora, punkty przerwania, aktywna konfiguracja kompilacji, historia wyszukiwania/zamiany, ustawienia specyficzne dla rozszerzeń |
| Typowy rozmiar pliku | 5 KB - 5 MB (rośnie wraz z liczbą otwartych plików, punktów przerwania i rozszerzeń) |
| Atrybut systemu plików | Oznaczony jako ukryty; przechowywany obok pliku .sln w katalogu głównym rozwiązania |
| Kontrola wersji | Musi być wykluczony z VCS; dodaj *.suo do .gitignore |
| Automatyczne odtwarzanie | Automatycznie regenerowany przez Visual Studio po usunięciu; usunięcie jest bezpiecznym krokiem diagnostycznym |
| Rozmiar sektora CFBF | Sektory 512-bajtowe (format CFBF v3) |
| Izolacja strumieni | Każdy zainstalowany pakiet lub rozszerzenie VS zapisuje własny, odizolowany, nazwany strumień |
| Status dziedzictwa | Zastąpiony przez ukryty folder .vs (VS 2015+); nie jest tworzony przez VS 2017 i nowsze |
| Powiązany system operacyjny | Windows |
| Odzyskiwanie po uszkodzeniu | Usunięcie pliku .suo i ponowne otwarcie rozwiązania to standardowy pierwszy krok w przypadku uszkodzenia stanu IDE |
| Wydano | 1997 (Visual Studio 97 / Visual Studio 5.0) |
| Najnowsza wersja | 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. |
| Specyfikacja | learn.microsoft.com |
Konwersje SUO
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki SUO.