Ar trebui să adaug fișierele Visual Studio .suo și .user la controlul sursei?

Soluțiile Visual Studio conțin două tipuri de fișiere utilizator ascunse. Unul este fișierul soluție .suo care este un fișier binar. Celălalt este fișierul proiect .user care este un fișier text. Exact ce date conțin aceste fișiere?

De asemenea, m-am întrebat dacă ar trebui să adaug aceste fișiere la controlul sursei (Subversion în cazul meu). Dacă nu adaug aceste fișiere și un alt dezvoltator verifică soluția, Visual Studio va crea automat noi fișiere utilizator?


person Ben Mills    schedule 16.09.2008    source sursă
comment
Fișierele .suo sunt recreate automat. O modalitate excelentă de a vă „împrospăta” setările la implicite dacă lucrurile se rup.   -  person CodingBarfield    schedule 27.09.2010
comment
Cele mai bune practici pentru proiectele Subversion și Visual Studio este o întrebare mai generală despre acest subiect. De asemenea, răspunsul acceptat conține un link către documentația oficială MSDN, care descrie în detaliu ce fișiere/directoare ale soluțiilor VS/ proiectele ar trebui adăugate la sistemele de control sursă și care părți ar trebui ignorate.   -  person Attila Csipak    schedule 07.04.2014
comment
pentru *.suo, consultați aici: msdn.microsoft.com/en-us /library/bb165909.aspx   -  person smwikipedia    schedule 05.03.2015
comment
comment
Există o modalitate foarte ușoară de a determina dacă ar trebui să includeți un anumit fișier în controlul versiunilor. Ștergeți fișierul. Aplicația dvs. încă se construiește și se execută conform așteptărilor? Dacă da, fișierul nu trebuie inclus.   -  person JoelFan    schedule 27.10.2020


Răspunsuri (22)


Aceste fișiere conțin configurații ale preferințelor utilizatorului care sunt în general specifice mașinii dvs., așa că este mai bine să nu le puneți în SCM. De asemenea, VS îl va schimba aproape de fiecare dată când îl executați, așa că va fi întotdeauna marcat de SCM ca „schimbat”. Nici eu nu includ, sunt într-un proiect folosind VS de 2 ani și nu am avut probleme în a face asta. Singura supărare minoră este că parametrii de depanare (cale de execuție, țintă de implementare etc.) sunt stocați într-unul dintre acele fișiere (nu știu care), așa că, dacă aveți un standard pentru ei, nu veți putea " publicați-l prin SCM pentru ca alți dezvoltatori să aibă întregul mediu de dezvoltare „gata de utilizat”.

person Fabio Ceconello    schedule 16.09.2008
comment
Fiți atenți, fișierul suo stochează informații dacă proiectul este încărcat/descărcat în soluție. - person Kugel; 13.10.2011
comment
Cred că stochează informațiile de depanare în fișierul .user (cel puțin pentru SQL Server Data Tools). De asemenea, atunci când modificați setările din fila Debug, nu este întotdeauna persistat la .user imediat (închiderea soluției pare să funcționeze, puțin enervant... sau modificarea unei alte setări stocate în fișierul .sqlproj). - person jamiebarrow; 03.08.2012
comment
Puteți deschide atât fișierele .user, cât și .csproj în orice editor de text. Tocmai am testat copierea-lipirea setărilor relevante de depanare din .user în .csproj, apoi ștergerea fișierului .user. Depanarea a continuat să funcționeze, citind cu plăcere setările corecte din noua lor locație din fișierul .csproj. Acest lucru ar trebui să ofere o modalitate de a confirma setările de depanare fără a comite fișierul .user. Asigurați-vă că le puneți în configurația corectă (depanare, lansare etc.). Funcționează pe mașina mea! =) - person Chris Nielsen; 14.08.2012
comment
@ChrisNielsen, proprietățile introduse manual apar în GUI în Visual Studio? Se pare că depanarea funcționează, dar pare misterios deoarece valorile câmpului nu apar în Visual Studio - person JamEnergy; 14.01.2021

Nu trebuie să le adăugați -- conțin setări pentru fiecare utilizator, iar alți dezvoltatori nu vor dori copia dvs.

person Steve Cooper    schedule 16.09.2008
comment
Dacă lucrați singur pe mai multe mașini diferite, ar merita să le adăugați? - person thepocketwade; 25.08.2009
comment
Nu aș face-o, pentru că poate fi fragil la diferențele neașteptate de sistem; de exemplu, dacă lucrați pe x64 la serviciu și x86 acasă, atunci s-ar putea să se sufoce cu c:\program files (x86) și c:\program files. Nu știu, dar nu aș risca. - person Steve Cooper; 01.02.2011
comment
Deși conțin informații specifice utilizatorului, informațiile despre fișierele care sunt nou adăugate prin opțiunea (include în proiect) sunt și în fișierul .csproj cred, ceea ce necesită ca ceilalți utilizatori să adauge manual toate resursele nou adăugate de proiect. Dacă cineva știe o soluție, vă rugăm să menționați aici. - person zeppelin; 04.02.2015

Alții au explicat de ce a avea fișierele *.suo și *.user sub control sursă nu este o idee bună.

Aș dori să vă sugerez să adăugați aceste modele la proprietatea svn:ignore din două motive:

  1. Deci, alți dezvoltatori nu vor ajunge cu setările unuia dintre dezvoltatori.
  2. Deci, atunci când vizualizați starea sau comiteți fișiere, acele fișiere nu vor aglomera baza de cod și nu vor ascunde fișierele noi pe care trebuie să le adăugați.
person JXG    schedule 17.09.2008
comment
Unde și cum este setată proprietatea svn:ignore? - person Peter Mortensen; 21.04.2015
comment
@PeterMortensen, vezi această întrebare: stackoverflow.com/questions/86049/ - person JXG; 26.04.2015
comment
Dar există un caz (a se vedea acest răspuns) pentru adăugarea .user, așa că atunci se poate alege să nu ignore doar .suo – sau s-ar putea ignora .user, astfel încât să fie nevoie de o decizie conștientă pentru a le adăuga? Nu credeți, scopul lui svn:ignore este să marcheze lucrurile în care nu este nevoie de o decizie conștientă. - person PJTraill; 27.05.2015

Nu comitem fișierul binar (*.suo), dar comitem fișierul .user. Fișierul .user conține, de exemplu, opțiunile de pornire pentru depanarea proiectului. Puteți găsi opțiunile de pornire în proprietățile proiectului în fila „Depanare”. Am folosit NUnit în unele proiecte și am configurat nunit-gui.exe ca opțiune de pornire pentru proiect. Fără fișierul .user, fiecare membru al echipei ar trebui să-l configureze separat.

Sper că acest lucru vă ajută.

person Thomas    schedule 16.09.2008
comment
De asemenea, încep să cred că acesta ar trebui să fie cazul - comite fișierul utilizator, astfel încât dezvoltatorii dintr-o echipă să folosească aceleași setări de depanare. Dacă îl schimbă pe propria mașină, tot bine, atâta timp cât modul standard este versiunea în controlul sursei. - person jamiebarrow; 03.08.2012
comment
Alții au sugerat să nu facă acest lucru, dar nu sunt sigur care ar putea fi pericolele. Poate pentru că fișierul repo cu setări mai puțin precise ar distruge copia locală (mai bună) a utilizatorului? (Echipa noastră folosește Mercurial, BTW.) - person Jon Coombs; 23.09.2013
comment
Microsoft nu recomandă adăugarea fișierului .user la controlul sursei. - person DavidRR; 20.11.2015
comment
Puteți muta setările de depanare în .csproj, consultați acest comentariu - person Tim Sparkles; 30.01.2018
comment
ați putea doar să adăugați o copie cu nume diferit a setărilor standard de utilizator. - person QuantumDebris; 20.07.2021

Deoarece am găsit această întrebare/răspuns prin Google în 2011, m-am gândit să iau o secundă și să adaug linkul pentru fișierele *.SDF create de Visual Studio 2010 la lista de fișiere care probabil nu ar trebui adăugate la controlul versiunilor ( IDE-ul le va re-crea). Deoarece nu eram sigur că un fișier *.sdf poate avea o utilizare legitimă în altă parte, am ignorat doar fișierul specific [projectname].sdf din SVN.

De ce asistentul de conversie Visual Studio 2010 creează un fișier masiv de bază de date SDF?

person Stephen    schedule 04.07.2011
comment
Fișierul SDF este probabil o bază de date SQL Server Compact Edition. - person Carl G; 18.09.2012

Nu, nu ar trebui să le adăugați la controlul sursă deoarece - după cum ați spus - sunt specifice utilizatorului.

SUO (Solution User Options): Înregistrează toate opțiunile pe care le-ați putea asocia cu soluția dvs., astfel încât de fiecare dată când o deschideți, aceasta include personalizările pe care le-ați făcut.

Fișierul .user conține opțiunile utilizatorului pentru proiect (în timp ce SUO este pentru soluție) și extinde numele fișierului de proiect (de exemplu, anything.csproj.user conține setările utilizatorului pentru proiectul anything.csproj).

person JRoppert    schedule 16.09.2008

Aceasta pare a fi opinia Microsoft cu privire la această problemă:

Adăugarea (și editarea ) Fișierele .suo la controlul sursei

Nu știu de ce proiectul dvs. stochează DebuggingWorkingDirectory în fișierul suo. Dacă aceasta este o setare specifică utilizatorului, ar trebui să luați în considerare stocarea acesteia în numele fișierului *.proj.user. Dacă această setare poate fi partajată între toți utilizatorii care lucrează la proiect, ar trebui să luați în considerare stocarea acesteia în fișierul de proiect în sine.

Nu vă gândiți să adăugați fișierul suo la controlul sursei! Fișierul SUO (opțiuni utilizator soluție) este menit să conțină setări specifice utilizatorului și nu ar trebui să fie partajat între utilizatorii care lucrează la aceeași soluție . Dacă ați adăuga fișierul suo în baza de date scc, nu știu ce alte lucruri în IDE ați sparge, dar din punct de vedere al controlului sursei veți întrerupe integrarea proiectelor web scc, pluginul Lan vs Internet folosit de către diferiți utilizatori pentru accesul VSS, și ați putea chiar provoca ruperea completă a scc (calea bazei de date VSS stocată în fișierul suo care poate fi valabilă pentru dvs. poate să nu fie valabilă pentru alt utilizator).

Alin Constantin (MSFT)

person Scott W    schedule 16.09.2008
comment
De asemenea, de la MSDN: Fișier Opțiuni utilizator (.Suo) soluție. Prima propoziție explică intenția Microsoft destul de clară: Fișierul opțiuni pentru utilizatorul soluției (.suo) conține opțiuni de soluție pentru fiecare utilizator. Acest fișier nu ar trebui să fie înregistrat în controlul codului sursă. - person DavidRR; 20.11.2015

În mod implicit, Visual SourceSafe de la Microsoft nu include aceste fișiere în controlul sursă deoarece sunt fișiere de setări specifice utilizatorului. Aș urma acel model dacă utilizați SVN ca control sursă.

person cori    schedule 16.09.2008

Visual Studio le va crea automat. Nu recomand să le puneți în controlul sursei. Au existat de multe ori în care fișierul SOU al unui dezvoltator local a determinat VS să se comporte neregulat în acea casetă de dezvoltatori. Ștergerea fișierului și apoi lăsarea lui VS să-l recreeze a rezolvat întotdeauna problemele.

person Mike Becatti    schedule 16.09.2008
comment
Mi-a mai rămas fișierul .sou și dădea probleme la reîncărcarea pachetelor. Ștergerea fișierului .sou a rezolvat problema. Mulțumesc. - person mercedes; 27.09.2017

Pe site-ul web MSDN, se afirmă clar că

Fișierul opțiuni pentru utilizatorul soluției (.suo) conține opțiuni de soluție pentru fiecare utilizator. Acest fișier nu ar trebui să fie înregistrat în controlul codului sursă.

Așa că aș spune că este destul de sigur să ignori aceste fișiere în timp ce înregistrezi lucruri în controlul sursei.

person Farax    schedule 19.05.2016

nu aș face-o. Orice lucru care s-ar putea schimba pe „utilizator” nu este de obicei bun în controlul sursei. directoare .suo, .user, obj/bin

person ScaleOvenStove    schedule 16.09.2008

No.

Am vrut doar un răspuns foarte scurt și nu a existat.

person Pablo Carrasco Hernández    schedule 06.08.2019

Aceste fișiere sunt opțiuni specifice utilizatorului, care ar trebui să fie independente de soluția în sine. Visual Studio va crea altele noi după cum este necesar, astfel încât acestea nu trebuie să fie verificate în controlul sursei. Într-adevăr, probabil ar fi mai bine să nu o faci, deoarece acest lucru le permite dezvoltatorilor individuali să-și personalizeze mediul după cum consideră de cuviință.

person benefactual    schedule 16.09.2008

Nu puteți controla prin sursă fișierele .user, deoarece acestea sunt specifice utilizatorului. Conține numele mașinii de la distanță și alte lucruri dependente de utilizator. Este un fișier legat de vcproj.

Fișierul .suo este un fișier legat de sln și conține „opțiunile utilizatorului soluției” (proiect(e) de pornire, poziția ferestrelor (ce este andocat și unde, ce plutește), etc.)

Este un fișier binar și nu știu dacă conține ceva „relativ cu utilizatorul”.

În compania noastră nu luăm acele fișiere sub controlul sursei.

person ugasoft    schedule 16.09.2008

Acestea conțin setările specifice despre proiect care sunt de obicei atribuite unui singur dezvoltator (cum ar fi, de exemplu, proiectul de pornire și pagina de pornire care urmează să înceapă atunci când depanați aplicația).

Deci, este mai bine să nu le adăugați la controlul versiunilor, lăsând VS să le recreeze, astfel încât fiecare dezvoltator să aibă setările specifice pe care le dorește.

person massimogentilini    schedule 16.09.2008

.user sunt setările utilizatorului și cred că .suo sunt opțiunile utilizatorului soluției. Nu doriți ca aceste fișiere să fie sub controlul sursei; acestea vor fi re-create pentru fiecare utilizator.

person Nick    schedule 16.09.2008

Utilizând Rational ClearCase, răspunsul este nu. Doar .sln & .*proj ar trebui să fie înregistrate în controlul codului sursă.

Nu pot răspunde pentru alți furnizori. Dacă îmi amintesc corect, aceste fișiere sunt opțiuni specifice „utilizatorului”, mediul dumneavoastră.

person titanae    schedule 16.09.2008
comment
only the .sln & .*proj should be registered - nu ai uitat o mulțime de fișiere aici? - person Wolf; 14.12.2016
comment
@Wolf în afară de evident - person Polluks; 21.07.2017

Nu adăugați niciunul dintre aceste fișiere în controlul versiunilor. Aceste fișiere sunt generate automat cu informații specifice stației de lucru, dacă sunt înregistrate în controlul versiunilor, ceea ce va cauza probleme în alte stații de lucru.

person Amila    schedule 13.11.2018

Nu, nu ar trebui să fie implicați în controlul sursei, deoarece sunt setări locale specifice dezvoltatorului/mașinii.

GitHub menține o listă de tipuri de fișiere sugerate pentru ca utilizatorii Visual Studio să le ignore la https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

Pentru svn, am următorul set de proprietăți global-ignore:

*.DotSettings.User
*.onetoc2
*.suo
.vs
PrecompiledWeb
thumbs.db
obj
bin
depanare
*.user
*.vshost.*
*.tss
*.dbml.layout

person Stephen Kennedy    schedule 16.02.2019

Alții au explicat că nu, nu vrei asta în controlul versiunilor. Ar trebui să configurați sistemul de control al versiunilor pentru a ignora fișierul (de exemplu, printr-un fișier .gitignore).

Pentru a înțelege cu adevărat de ce, vă ajută să vedeți ce este de fapt în acest fișier. Am scris un instrument de linie de comandă care vă permite să vedeți conținutul fișierului .suo.

Instalați-l pe mașina dvs. prin:

dotnet tool install -g suo

Are două sub-comenzi, keys și view.

suo keys <path-to-suo-file>

Acest lucru va elimina cheia pentru fiecare valoare din fișier. De exemplu (prescurtat):

nuget
ProjInfoEx
BookmarkState
DebuggerWatches
HiddenSlnFolders
ObjMgrContentsV8
UnloadedProjects
ClassViewContents
OutliningStateDir
ProjExplorerState
TaskListShortcuts
XmlPackageOptions
BackgroundLoadData
DebuggerExceptions
DebuggerFindSource
DebuggerFindSymbol
ILSpy-234190A6EE66
MRU Solution Files
UnloadedProjectsEx
ApplicationInsights
DebuggerBreakpoints
OutliningStateV1674
...

După cum puteți vedea, multe caracteristici IDE folosesc acest fișier pentru a-și stoca starea.

Utilizați comanda view pentru a vedea valoarea unei chei date. De exemplu:

$ suo view nuget --format=utf8 .suo
nuget

?{"WindowSettings":{"project:MyProject":{"SourceRepository":"nuget.org","ShowPreviewWindow":false,"ShowDeprecatedFrameworkWindow":true,"RemoveDependencies":false,"ForceRemove":false,"IncludePrerelease":false,"SelectedFilter":"UpdatesAvailable","DependencyBehavior":"Lowest","FileConflictAction":"PromptUser","OptionsExpanded":false,"SortPropertyName":"ProjectName","SortDirection":"Ascending"}}}

Mai multe informații despre instrument aici: https://github.com/drewnoakes/suo

person Drew Noakes    schedule 04.02.2021

Dacă setați dependențele directorului executabil în ProjectProperties>Debugging>Environment, căile sunt stocate în fișiere „.user”.

Să presupunem că am setat acest șir în câmpul menționat mai sus: "PATH=C:\xyz\bin" Acesta este modul în care va fi stocat în fișierul „.user”:

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

Acest lucru ne-a ajutat foarte mult în timp ce lucram în OpenCV. Am putea folosi diferite versiuni de OpenCV pentru diferite proiecte. Un alt avantaj este că a fost foarte ușor să ne instalăm proiectele pe o mașină nouă. A trebuit doar să copiem direcțiile de dependență corespunzătoare. Deci, pentru unele proiecte, prefer să adaug „.user” la controlul sursei.

Chiar dacă, depinde în întregime de proiecte. Puteți prelua un apel în funcție de nevoile dvs.

person adheen    schedule 26.07.2018
comment
Legăturile simbolice funcționează, de asemenea, foarte bine în acest scop. - person sɐunıɔןɐqɐp; 26.07.2018

După cum se explică în alte răspunsuri, atât .suo, cât și .user nu ar trebui adăugate la controlul sursei, deoarece sunt specifice utilizatorului/mașinii (BTW .suo pentru cele mai noi versiuni de VS a fost mutat în directorul temporar dedicat .vs, care ar trebui să fie păstrat în afara sursei). controlează complet).

Cu toate acestea, dacă aplicația dvs. necesită o anumită configurare a mediului pentru depanare în VS (astfel de setări sunt de obicei păstrate în fișierul .user), poate fi util să pregătiți un fișier exemplu (numindu-l ca .user.SAMPLE) și să îl adăugați la controlul sursei pentru referințe.

În loc de calea absolută codificată în acest fișier, este logic să folosiți cele relative sau să vă bazați pe variabilele de mediu, astfel încât eșantionul poate fi suficient de generic pentru a fi ușor reutilizabil de către alții.

person AntonK    schedule 29.04.2019