Czy powinienem dodać pliki .suo i .user programu Visual Studio do kontroli źródła?

841

Rozwiązania Visual Studio zawierają dwa typy ukrytych plików użytkownika. Jednym z nich jest .suoplik rozwiązania , który jest plikiem binarnym. Drugi to .userplik projektu , który jest plikiem tekstowym. Dokładnie jakie dane zawierają te pliki?

Zastanawiam się także, czy powinienem dodać te pliki do kontroli źródła (w moim przypadku Subversion). Jeśli nie dodam tych plików, a inny programista sprawdzi rozwiązanie, czy program Visual Studio automatycznie utworzy nowe pliki użytkownika?

Ben Mills
źródło
9
Pliki .suo są odtwarzane automatycznie. Świetny sposób na „odświeżenie” ustawień domyślnych, jeśli coś się zepsuje.
CodingBarfield
3
Najlepsze praktyki dotyczące projektów Subversion i Visual Studio to bardziej ogólne pytanie na ten właśnie temat. Również zaakceptowana odpowiedź zawiera link do oficjalnej dokumentacji MSDN, która szczegółowo opisuje, które pliki / katalogi rozwiązań VS / projektów powinny zostać dodane do systemów kontroli źródła, a które części należy zignorować.
Attila Csipak
3
dla * .suo, zobacz tutaj: msdn.microsoft.com/en-us/library/bb165909.aspx
smwikipedia

Odpowiedzi:

673

Te pliki zawierają konfiguracje preferencji użytkownika, które są ogólnie specyficzne dla twojego komputera, więc lepiej nie umieszczać go w SCM. Ponadto VS zmieni to prawie za każdym razem, gdy ją wykonasz, więc SCM zawsze będzie oznaczać ją jako „zmienioną”. Nie uwzględniam też, jestem w projekcie używającym VS przez 2 lata i nie miałem z tym problemu. Jedyną niewielką uciążliwością jest to, że parametry debugowania (ścieżka wykonania, cel wdrożenia itp.) Są przechowywane w jednym z tych plików (nie wiem, który), więc jeśli masz dla nich standard, nie będziesz w stanie „ opublikować „za pośrednictwem SCM, aby inni programiści mieli„ gotowe do użycia ”całe środowisko programistyczne.

Fabio Ceconello
źródło
22
Uważaj, plik suo przechowuje informacje, czy projekt jest ładowany / rozładowywany w ramach rozwiązania.
Kugel
5
Wierzę, że przechowuje informacje debugowania w pliku .user (przynajmniej dla SQL Server Data Tools). Ponadto, po zmianie ustawień w zakładce Debugowanie, nie zawsze trwało to od razu .user (zamknięcie rozwiązania wydaje się działać, trochę denerwujące ... lub zmiana innego ustawienia zapisanego w pliku .sqlproj).
jamiebarrow,
87
Pliki .user i .csproj można otwierać w dowolnym edytorze tekstu. Właśnie przetestowałem kopiowanie-wklejanie odpowiednich ustawień debugowania z .user do .csproj, a następnie usuwanie pliku .user. Debugowanie kontynuowało pracę, z radością odczytując prawidłowe ustawienia z nowej lokalizacji w pliku .csproj. Powinno to zapewnić sposób zatwierdzenia ustawień debugowania bez zatwierdzania pliku .user. Upewnij się, że ustawiłeś je we właściwej konfiguracji (debugowanie, wydanie itp.). Działa na mojej maszynie! =)
Chris Nielsen
139

Nie musisz ich dodawać - zawierają ustawienia dla poszczególnych użytkowników, a inni programiści nie będą chcieli Twojej kopii.

Steve Cooper
źródło
19
Jeśli pracujesz sam na kilku różnych maszynach, czy warto byłoby je dodać?
thepocketwade
33
Nie zrobiłbym tego, ponieważ może być wrażliwy na nieoczekiwane różnice systemowe; na przykład, jeśli pracujesz na x64 w pracy i x86 w domu, może to zadławić się „c: \ program files (x86)” i „c: \ program files”. Nie wiem, ale nie zaryzykowałbym tego.
Steve Cooper
2
Mimo że zawierają informacje specyficzne dla użytkownika, ale informacje o plikach, które są nowo dodawane za pomocą opcji (uwzględnij w projekcie), są również w pliku .csproj, co chyba wymaga od innych użytkowników ręcznego dodania wszystkich nowo dodanych zasobów projektu. Jeśli ktoś zna obejście, proszę wymienić tutaj.
zeppelin
69

Inni wyjaśnili, dlaczego posiadanie plików *.suoi *.userpod kontrolą źródła nie jest dobrym pomysłem.

Chciałbym zasugerować dodanie tych wzorów do svn:ignorewłaściwości z 2 powodów:

  1. Aby inni programiści nie skończyli z ustawieniami jednego programisty.
  2. Kiedy więc przeglądasz status lub zatwierdzasz pliki, pliki te nie będą zaśmiecały bazy kodu i nie zasłaniały nowych plików, które musisz dodać.
JXG
źródło
Gdzie i jak svn:ignoreustawia się właściwość?
Peter Mortensen
@PeterMortensen, zobacz to pytanie: stackoverflow.com/questions/86049/…
JXG
Ale jest uzasadnienie (patrz ta odpowiedź ) na dodanie .user, więc wtedy można wybrać opcję nie ignoruj ​​tylko .suo- lub można zignorować .user, aby podjąć świadomą decyzję o ich dodaniu? Nie myśl tak, chodzi o svn:ignoreoznaczanie rzeczy, w których nie jest wymagana świadoma decyzja.
PJTraill
49

Nie zatwierdzamy pliku binarnego (* .suo), ale zatwierdzamy plik .user. Plik .user zawiera na przykład opcje rozpoczęcia debugowania projektu. Opcje początkowe można znaleźć we właściwościach projektu w zakładce „Debugowanie”. W niektórych projektach używaliśmy NUnit i skonfigurowaliśmy nunit-gui.exe jako opcję uruchamiania projektu. Bez pliku .user każdy członek zespołu musiałby go skonfigurować osobno.

Mam nadzieję że to pomoże.

Tomasz
źródło
4
Zaczynam też myśleć, że tak powinno być - zatwierdź plik użytkownika, aby programiści w zespole używali tych samych ustawień debugowania. Jeśli zmienią to na własnym komputerze, nadal będzie dobrze, o ile standardową wersją jest kontrola wersji.
jamiebarrow,
1
Inni zasugerowali, aby tego nie robić, ale nie jestem pewien, jakie mogą być niebezpieczeństwa. Może dlatego, że plik repo z mniej precyzyjnymi ustawieniami zdmuchnąłby (lepszą) lokalną kopię użytkownika? (Nasz zespół używa Mercurial, BTW.)
Jon Coombs
2
Microsoft odradza dodawanie pliku .user do kontroli źródła.
DavidRR
1
Możesz przenieść ustawienia debugowania do .csproj, zobacz ten komentarz
Timbo
26

Ponieważ znalazłem to pytanie / odpowiedź w Google w 2011 roku, pomyślałem, że poświęcę chwilę i dodam link do plików * .SDF utworzonych przez Visual Studio 2010 do listy plików, które prawdopodobnie nie powinny zostać dodane do kontroli wersji ( IDE je odtworzy). Ponieważ nie byłem pewien, czy plik * .sdf może mieć uzasadnione zastosowanie w innym miejscu, zignorowałem tylko konkretny plik .sdf [nazwa projektu] z SVN.

Dlaczego kreator konwersji Visual Studio 2010 tworzy ogromny plik bazy danych SDF?

Stephen
źródło
2
Plik SDF jest prawdopodobnie bazą danych SQL Server Compact Edition .
Carl G
23

Nie, nie powinieneś dodawać ich do kontroli źródła, ponieważ - jak powiedziałeś - są one specyficzne dla użytkownika.

SUO (Opcje użytkownika rozwiązania): Rejestruje wszystkie opcje, które możesz powiązać z rozwiązaniem, aby za każdym razem, gdy je otwierasz, zawierało dokonane przez Ciebie dostosowania.

Plik .user zawiera opcje użytkownika dla projektu (podczas gdy SUO jest rozwiązaniem) i rozszerza nazwę pliku projektu (np. Cokolwiek.csproj.user zawiera ustawienia użytkownika dla projektu cokolwiek. Csproj).

JRoppert
źródło
20

Wydaje się, że jest to opinia Microsoftu w tej sprawie:

Dodawanie (i edycja) plików .suo do kontroli źródła

Nie wiem, dlaczego twój projekt przechowuje DebuggingWorkingDirectory w pliku suo. Jeśli jest to ustawienie specyficzne dla użytkownika, należy rozważyć zapisanie go w nazwie pliku * .proj.user. Jeśli ustawienie to można udostępnić wszystkim użytkownikom pracującym nad projektem, należy rozważyć zapisanie go w samym pliku projektu.

Nawet nie myśl o dodaniu pliku suo do kontroli źródła! Plik SUO (soluton user options) ma zawierać ustawienia specyficzne dla użytkownika i nie powinien być udostępniany użytkownikom pracującym nad tym samym rozwiązaniem. Jeśli chcesz dodać plik suo do bazy danych scc, nie wiem, jakie inne rzeczy w IDE złamałeś, ale z punktu widzenia kontroli źródła zepsujesz integrację projektów internetowych scc, użyto wtyczki Lan vs Internet przez różnych użytkowników dla dostępu VSS, a może nawet spowodować całkowite uszkodzenie scc (ścieżka bazy danych VSS przechowywana w pliku suo, która może być dla Ciebie ważna, może nie być ważna dla innego użytkownika).

Alin Constantin (MSFT)

Scott W.
źródło
Również z MSDN: Plik opcji użytkownika rozwiązania (.Suo) . Pierwsze zdanie wyjaśnia intencję Microsoftu: „Plik opcji użytkownika rozwiązania (.suo) zawiera opcje rozwiązania dla użytkownika. Ten plik nie powinien być rejestrowany w celu kontroli kodu źródłowego”.
DavidRR
19

Domyślnie Visual SourceSafe firmy Microsoft nie włącza tych plików do kontroli źródła, ponieważ są to pliki ustawień specyficzne dla użytkownika. Podążałbym za tym modelem, jeśli używasz SVN jako kontroli źródła.

cori
źródło
12

Visual Studio je automatycznie utworzy. Nie polecam poddania ich kontroli źródła. Wiele razy plik SOU lokalnego programisty powodował, że VS zachowywał się nieprawidłowo na tym polu programisty. Usunięcie pliku, a następnie umożliwienie jego odtworzenia przez VS zawsze rozwiązało problemy.

Ogar
źródło
Został mi plik .sou i problem z przeładowaniem pakietów. Usunięcie pliku .sou rozwiązało problem. Dziękuję Ci.
Mercedes
11

Na stronie MSDN wyraźnie to stwierdza

Plik opcji użytkownika rozwiązania (.suo) zawiera opcje rozwiązania dla poszczególnych użytkowników. Ten plik nie powinien być rejestrowany w celu kontroli kodu źródłowego .

Powiedziałbym więc, że całkiem bezpiecznie jest zignorować te pliki podczas sprawdzania elementów w kontroli źródła.

Farax
źródło
9

Nie zrobiłbym tego. Wszystko, co mogłoby się zmienić na „użytkownika”, zwykle nie jest dobre w kontroli źródła. .suo, .user, obj / bin katalogi

ScaleOvenStove
źródło
8

Te pliki są opcjami specyficznymi dla użytkownika, które powinny być niezależne od samego rozwiązania. Visual Studio utworzy nowe w razie potrzeby, więc nie trzeba ich rejestrować w celu kontroli źródła. Rzeczywiście, prawdopodobnie lepiej byłoby tego nie robić, ponieważ pozwala to indywidualnym programistom dostosowywać swoje środowisko według własnego uznania.

korzystne
źródło
7

Nie można sterować źródłami plików .user, ponieważ są one specyficzne dla użytkownika. Zawiera nazwę zdalnego komputera i inne rzeczy zależne od użytkownika. Jest to plik związany z vcproj.

Plik .suo jest plikiem powiązanym z SLN i zawiera „opcje użytkownika rozwiązania” (projekty startowe), położenie systemu Windows (co jest zadokowane i gdzie, co jest zmiennoprzecinkowe) itp.)

Jest to plik binarny i nie wiem, czy zawiera coś „związanego z użytkownikiem”.

W naszej firmie nie bierzemy tych plików pod kontrolę źródła.

ugasoft
źródło
7

Zawierają one specyficzne ustawienia dotyczące projektu, które zwykle są przypisane do jednego programisty (na przykład projekt początkowy i strona początkowa, które mają się rozpocząć podczas debugowania aplikacji).

Lepiej więc nie dodawać ich do kontroli wersji, pozostawiając VS odtworzyć je, aby każdy programista mógł mieć określone ustawienia.

massimogentilini
źródło
5

.user to ustawienia użytkownika i myślę, że .suo to opcje użytkownika rozwiązania. Nie chcesz, aby te pliki były pod kontrolą źródła; zostaną one ponownie utworzone dla każdego użytkownika.

Nacięcie
źródło
5

Nie.

Chciałem tylko naprawdę krótkiej odpowiedzi, a żadnej nie było.

Pablo Carrasco Hernández
źródło
4

Przy użyciu produktu Rational ClearCase odpowiedź brzmi „nie”. W kontroli kodu źródłowego należy zarejestrować tylko .sln &. * Proj.

Nie mogę odpowiadać za innych dostawców. Jeśli dobrze pamiętam, te pliki są opcjami specyficznymi dla użytkownika, twojego środowiska.

tytany
źródło
only the .sln & .*proj should be registered- nie zapomniałeś tutaj wielu plików?
Wolf
@Wolf oprócz oczywistych
Polluks
3

Nie dodawaj żadnego z tych plików do kontroli wersji. Pliki te są generowane automatycznie na podstawie informacji specyficznych dla stacji roboczej, jeśli zostaną zarejestrowane w kontroli wersji, co spowoduje problemy na innych stacjach roboczych.

Amila
źródło
2

Nie, nie powinni być zobowiązani do kontroli źródła, ponieważ są to ustawienia lokalne specyficzne dla programistów / komputerów.

GitHub prowadzi listę sugerowanych typów plików do zignorowania przez użytkowników Visual Studio na https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

Dla svn mam następujący global-ignorezestaw właściwości:

* .DotSettings.User
* .onetoc2
* .suo
.vo
PrecompiledWeb
thumbs.db
obj
bin
debug
* .user
* .vshost. *
* .Tss
* .dbml.layout

Stephen Kennedy
źródło
1

Jeśli ustawisz zależności pliku wykonywalnego w ProjectProperties> Debugowanie> Środowisko , ścieżki są przechowywane w plikach „.user”.

Załóżmy, że ustawiłem ten ciąg w wyżej wspomnianym polu: „ŚCIEŻKA = C: \ xyz \ bin” W ten sposób zostanie zapisany w pliku „.user”:

<LocalDebuggerEnvironment>PATH=C:\xyz\bin$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>

To bardzo nam pomogło podczas pracy w OpenCV. Możemy użyć różnych wersji OpenCV do różnych projektów. Kolejną zaletą jest to, że bardzo łatwo było skonfigurować nasze projekty na nowej maszynie. Musieliśmy po prostu skopiować odpowiednie katalogi zależności. Dlatego w przypadku niektórych projektów wolę dodać „.user” do kontroli źródła.

Mimo to jest całkowicie zależny od projektów. Możesz odebrać połączenie w zależności od potrzeb.

adheen
źródło
W tym celu również bardzo dobrze działają linki symboliczne.
sɐunıɔ ןɐ qɐp
1

Jak wyjaśniono w innych odpowiedzi, zarówno .suoi .usernie powinien być dodany do kontroli źródła, ponieważ są one user / maszyna specyficzne (BTW .suona najnowszych wersjach VS została przeniesiona do specjalnego katalogu tymczasowego .vs, które powinny być przechowywane w miejscu kontroli źródła całkowicie).

Jeśli jednak aplikacja wymaga pewnej konfiguracji środowiska do debugowania w VS (takie ustawienia są zwykle przechowywane w .userpliku), może być przydatne przygotowanie przykładowego pliku (nadanie mu nazwy .user.SAMPLE) i dodanie go do kontroli źródła w celu uzyskania referencji.

Zamiast zakodowanej na stałe ścieżki bezwzględnej w takim pliku, sensowne jest użycie względnych lub poleganie na zmiennych środowiskowych, więc próbka może być wystarczająco ogólna, aby inni mogli z niej łatwo korzystać.

AntonK
źródło