Sollte ich die Visual Studio-Dateien .suo und .user zur Quellcodeverwaltung hinzufügen?

841

Visual Studio-Lösungen enthalten zwei Arten von versteckten Benutzerdateien. Eine ist die Lösungsdatei .suo, die eine Binärdatei ist. Die andere ist die Projektdatei .user, die eine Textdatei ist. Welche Daten enthalten diese Dateien genau?

Ich habe mich auch gefragt, ob ich diese Dateien zur Quellcodeverwaltung hinzufügen soll (in meinem Fall Subversion). Wenn ich diese Dateien nicht hinzufüge und ein anderer Entwickler die Lösung auscheckt, erstellt Visual Studio dann automatisch neue Benutzerdateien?

Ben Mills
quelle
9
.suo-Dateien werden automatisch neu erstellt. Eine großartige Möglichkeit, Ihre Standardeinstellungen zu aktualisieren, wenn Probleme auftreten.
CodingBarfield
3
Best Practices für Subversion- und Visual Studio-Projekte sind eine allgemeinere Frage zu diesem Thema. Die akzeptierte Antwort enthält auch einen Link zur offiziellen MSDN-Dokumentation, in der detailliert beschrieben wird, welche Dateien / Verzeichnisse von VS-Lösungen / -Projekten zu Versionsverwaltungssystemen hinzugefügt werden sollten und welche Teile ignoriert werden sollten.
Attila Csipak
3
Für * .suo siehe hier: msdn.microsoft.com/en-us/library/bb165909.aspx
smwikipedia

Antworten:

673

Diese Dateien enthalten Benutzereinstellungen, die im Allgemeinen für Ihren Computer spezifisch sind. Es ist daher besser, sie nicht in SCM zu speichern. Außerdem ändert VS es fast jedes Mal, wenn Sie es ausführen, sodass es vom SCM immer als "geändert" markiert wird. Ich schließe auch nicht ein, ich bin seit 2 Jahren in einem Projekt mit VS und hatte keine Probleme damit. Das einzige kleine Ärgernis ist, dass die Debug-Parameter (Ausführungspfad, Bereitstellungsziel usw.) in einer dieser Dateien gespeichert sind (ich weiß nicht, welche). Wenn Sie also einen Standard für sie haben, können Sie dies nicht. ' Veröffentlichen Sie es über SCM, damit andere Entwickler die gesamte Entwicklungsumgebung einsatzbereit haben.

Fabio Ceconello
quelle
22
Seien Sie vorsichtig, die suo-Datei speichert Informationen darüber, ob das Projekt in der Lösung geladen / entladen wird.
Kugel
5
Ich glaube, es speichert die Debug-Informationen in der .user-Datei (zumindest für SQL Server Data Tools). Wenn Sie die Einstellungen auf der Registerkarte "Debuggen" ändern, wird sie nicht immer sofort auf ".user" gesetzt (das Schließen der Lösung scheint zu funktionieren, ist etwas ärgerlich ... oder das Ändern einer anderen in der .sqlproj-Datei gespeicherten Einstellung).
Jamie Barrow
87
Sie können sowohl die .user- als auch die .csproj-Datei in einem beliebigen Texteditor öffnen. Ich habe gerade getestet, wie die relevanten Debug-Einstellungen aus dem .user in den .csproj kopiert und dann die .user-Datei gelöscht wurden. Das Debuggen funktionierte weiterhin und las glücklich die korrekten Einstellungen von ihrem neuen Speicherort in der .csproj-Datei. Dies sollte eine Möglichkeit bieten, Debug-Einstellungen festzuschreiben, ohne die .user-Datei festzuschreiben. Stellen Sie sicher, dass Sie sie in der richtigen Konfiguration haben (Debug, Release usw.). Funktioniert auf meiner Maschine! =)
Chris Nielsen
139

Sie müssen diese nicht hinzufügen - sie enthalten Einstellungen pro Benutzer, und andere Entwickler möchten Ihre Kopie nicht.

Steve Cooper
quelle
19
Wenn Sie alleine an mehreren verschiedenen Maschinen arbeiten, lohnt es sich, diese hinzuzufügen?
Thepocketwade
33
Ich würde nicht, weil es für unerwartete Systemunterschiede fragil sein kann; Wenn Sie beispielsweise bei der Arbeit an x64 und zu Hause an x86 arbeiten, wird möglicherweise "c: \ Programme (x86)" und "c: \ Programme" verschluckt. Ich weiß es nicht, aber ich würde es nicht riskieren.
Steve Cooper
2
Sie enthalten zwar benutzerspezifische Informationen, aber die Informationen zu Dateien, die über die Option (in Projekt einschließen) neu hinzugefügt wurden, befinden sich meiner Meinung nach auch in der .csproj-Datei, sodass die anderen Benutzer alle neu hinzugefügten Projektressourcen manuell hinzufügen müssen. Wenn jemand eine Problemumgehung kennt, erwähnen Sie diese bitte hier.
Zeppelin
69

Andere haben erklärt, warum es keine gute Idee ist , die *.suound *.user-Dateien unter Quellcodeverwaltung zu haben.

Ich möchte vorschlagen, dass Sie diese Muster svn:ignoreaus zwei Gründen zur Eigenschaft hinzufügen :

  1. Andere Entwickler werden also nicht mit den Einstellungen eines Entwicklers enden.
  2. Wenn Sie also den Status anzeigen oder Dateien festschreiben, werden diese Dateien die Codebasis nicht überladen und neue Dateien, die Sie hinzufügen müssen, verdecken.
JXG
quelle
Wo und wie ist die svn:ignoreImmobilie eingestellt?
Peter Mortensen
@ PeterMortensen, siehe diese Frage: stackoverflow.com/questions/86049/…
JXG
Aber es gibt einen Fall (siehe diese Antwort ) für das Hinzufügen von .user, also kann man wählen, nicht nur zu ignorieren .suo- oder man könnte ignorieren .user, so dass es eine bewusste Entscheidung erfordert , sie hinzuzufügen? Denken Sie nicht, es geht darum, svn:ignoreDinge zu markieren, bei denen keine bewusste Entscheidung erforderlich ist.
PJTraill
49

Wir schreiben die Binärdatei (* .suo) nicht fest, sondern die .user-Datei. Die .user-Datei enthält beispielsweise die Startoptionen zum Debuggen des Projekts. Die Startoptionen finden Sie in den Eigenschaften des Projekts auf der Registerkarte "Debuggen". Wir haben NUnit in einigen Projekten verwendet und die nunit-gui.exe als Startoption für das Projekt konfiguriert. Ohne die .user-Datei müsste jedes Teammitglied sie separat konfigurieren.

Hoffe das hilft.

Thomas
quelle
4
Ich fange auch an zu denken, dass dies der Fall sein sollte - schreiben Sie die Benutzerdatei fest, damit Entwickler in einem Team dieselben Debug-Einstellungen verwenden. Wenn sie es auf ihrem eigenen Computer ändern, ist das immer noch in Ordnung, solange die Standardversion die Version in der Quellcodeverwaltung ist.
Jamie Barrow
1
Andere haben dagegen vorgeschlagen, aber ich bin mir nicht sicher, welche Gefahren bestehen könnten. Vielleicht, weil die Repo-Datei mit weniger genauen Einstellungen die (bessere) lokale Kopie des Benutzers wegblasen würde? (Unser Team verwendet Mercurial, BTW.)
Jon Coombs
2
Microsoft rät davon ab , die .user-Datei zur Quellcodeverwaltung hinzuzufügen.
DavidRR
1
Sie können die Debug-Einstellungen in die .csproj verschieben, siehe diesen Kommentar
Timbo
26

Da ich diese Frage / Antwort 2011 über Google gefunden habe, dachte ich, ich würde mir eine Sekunde Zeit nehmen und den Link für die von Visual Studio 2010 erstellten * .SDF-Dateien zur Liste der Dateien hinzufügen, die wahrscheinlich nicht zur Versionskontrolle hinzugefügt werden sollten ( Die IDE erstellt sie neu. Da ich nicht sicher war, ob eine * .sdf-Datei an anderer Stelle eine legitime Verwendung haben könnte, habe ich nur die spezifische [Projektname] .sdf-Datei von SVN ignoriert.

Warum erstellt der Visual Studio-Konvertierungsassistent 2010 eine umfangreiche SDF-Datenbankdatei?

Stephen
quelle
2
Die SDF-Datei ist wahrscheinlich eine SQL Server Compact Edition-Datenbank .
Carl G
23

Nein, Sie sollten sie nicht zur Quellcodeverwaltung hinzufügen, da sie - wie Sie sagten - benutzerspezifisch sind.

SUO (Solution User Options): Zeichnet alle Optionen auf, die Sie möglicherweise mit Ihrer Lösung verknüpfen, sodass sie bei jedem Öffnen Anpassungen vornehmen, die Sie vorgenommen haben.

Die .user-Datei enthält die Benutzeroptionen für das Projekt (während SUO für die Lösung vorgesehen ist) und erweitert den Namen der Projektdatei (z. B. any.csproj.user enthält Benutzereinstellungen für das Projekt any.csproj).

JRoppert
quelle
20

Dies scheint die Meinung von Microsoft zu diesem Thema zu sein:

Hinzufügen (und Bearbeiten) von .suo-Dateien zur Quellcodeverwaltung

Ich weiß nicht, warum Ihr Projekt das DebuggingWorkingDirectory in der suo-Datei speichert. Wenn dies eine benutzerspezifische Einstellung ist, sollten Sie diese im Dateinamen * .proj.user speichern. Wenn diese Einstellung von allen Benutzern gemeinsam genutzt werden kann, die an dem Projekt arbeiten, sollten Sie sie in der Projektdatei selbst speichern.

Denken Sie nicht einmal daran, die Suo-Datei zur Quellcodeverwaltung hinzuzufügen!Die SUO-Datei (Soluton User Options) soll benutzerspezifische Einstellungen enthalten und nicht für Benutzer freigegeben werden, die an derselben Lösung arbeiten. Wenn Sie die suo-Datei in die scc-Datenbank einfügen möchten, weiß ich nicht, welche anderen Dinge in der IDE Sie beschädigen würden, aber aus Sicht der Quellcodeverwaltung werden Sie die scc-Integration von Webprojekten unterbrechen, das verwendete Plugin Lan vs Internet von verschiedenen Benutzern für den VSS-Zugriff, und Sie können sogar dazu führen, dass der scc vollständig unterbrochen wird (der in einer suo-Datei gespeicherte VSS-Datenbankpfad, der möglicherweise für Sie gültig ist, ist möglicherweise für einen anderen Benutzer nicht gültig).

Alin Constantin (MSFT)

Scott W.
quelle
Auch aus der Datei MSDN: Solution User Options (.Suo) . Der erste Satz macht die Absicht von Microsoft ganz klar: "Die Datei mit den Lösungsbenutzeroptionen (.suo) enthält Lösungsoptionen pro Benutzer. Diese Datei sollte nicht in die Quellcodeverwaltung eingecheckt werden."
DavidRR
19

Standardmäßig nimmt Microsoft Visual SourceSafe diese Dateien nicht in die Quellcodeverwaltung auf, da es sich um benutzerspezifische Einstellungsdateien handelt. Ich würde diesem Modell folgen, wenn Sie SVN als Quellcodeverwaltung verwenden.

cori
quelle
12

Visual Studio erstellt sie automatisch. Ich empfehle nicht, sie in die Quellcodeverwaltung zu versetzen. Es gab zahlreiche Fälle, in denen die SOU-Datei eines lokalen Entwicklers dazu führte, dass sich VS auf dieser Entwicklerbox unregelmäßig verhielt. Durch Löschen der Datei und anschließendes erneutes Erstellen durch VS wurden die Probleme immer behoben.

Bluthund
quelle
Ich hatte die .sou-Datei übrig und es gab Probleme beim erneuten Laden der Pakete. Das Löschen der .sou-Datei hat das Problem behoben. Vielen Dank.
Mercedes
11

Auf der MSDN-Website wird dies eindeutig angegeben

Die Datei mit den Lösungsbenutzeroptionen (.suo) enthält Lösungsoptionen pro Benutzer. Diese Datei sollte nicht in die Quellcodeverwaltung eingecheckt werden .

Daher würde ich sagen, dass es ziemlich sicher ist, diese Dateien zu ignorieren, während Sie Inhalte in Ihre Quellcodeverwaltung einchecken.

Farax
quelle
9

Ich würde nicht. Alles, was sich pro "Benutzer" ändern könnte, ist normalerweise nicht gut in der Quellcodeverwaltung. Verzeichnisse .suo, .user, obj / bin

ScaleOvenStove
quelle
8

Diese Dateien sind benutzerspezifische Optionen, die von der Lösung selbst unabhängig sein sollten. Visual Studio erstellt nach Bedarf neue, sodass diese nicht in die Quellcodeverwaltung eingecheckt werden müssen. In der Tat wäre es wahrscheinlich besser, dies nicht zu tun, da dies einzelnen Entwicklern ermöglicht, ihre Umgebung nach Belieben anzupassen.

wohltätig
quelle
7

Sie können die .user-Dateien nicht als Quellcodeverwaltung verwenden, da dies benutzerspezifisch ist. Es enthält den Namen des Remote-Computers und anderer benutzerabhängiger Dinge. Es ist eine vcproj-bezogene Datei.

Die .suo-Datei ist eine sln-bezogene Datei und enthält die "Lösungsbenutzeroptionen" (Startprojekt (e), Windows-Position (was angedockt ist und wo, was schwebt) usw.)

Es ist eine Binärdatei, und ich weiß nicht, ob sie etwas "Benutzerbezogenes" enthält.

In unserem Unternehmen nehmen wir diese Dateien nicht unter Quellcodeverwaltung.

ugasoft
quelle
7

Sie enthalten die spezifischen Einstellungen für das Projekt, die normalerweise einem einzelnen Entwickler zugewiesen werden (z. B. das Startprojekt und die Startseite, die beim Debuggen Ihrer Anwendung gestartet werden sollen).

Es ist daher besser, sie nicht zur Versionskontrolle hinzuzufügen, und VS lässt sie neu erstellen, damit jeder Entwickler die gewünschten Einstellungen vornehmen kann.

massimogentilini
quelle
5

.user ist die Benutzereinstellung, und ich denke .suo ist die Benutzeroption der Lösung. Sie möchten nicht, dass diese Dateien der Quellcodeverwaltung unterliegen. Sie werden für jeden Benutzer neu erstellt.

Nick
quelle
5

Nein.

Ich wollte nur eine kurze Antwort, und es gab keine.

Pablo Carrasco Hernández
quelle
4

Mit Rational ClearCase lautet die Antwort nein. In der Quellcodeverwaltung sollte nur das Projekt .sln &. * Registriert werden.

Ich kann nicht für andere Anbieter antworten. Wenn ich mich richtig erinnere, sind diese Dateien "benutzerspezifische" Optionen, Ihre Umgebung.

Titanae
quelle
only the .sln & .*proj should be registered- Hast du hier nicht viele Dateien vergessen?
Wolf
@ Wolf neben dem Offensichtlichen
Polluks
3

Fügen Sie keine dieser Dateien zur Versionskontrolle hinzu. Diese Dateien werden automatisch mit arbeitsplatzspezifischen Informationen generiert, wenn sie in die Versionskontrolle eingecheckt werden, was zu Problemen an anderen Arbeitsstationen führen kann.

Amila
quelle
2

Nein, sie sollten nicht zur Quellcodeverwaltung verpflichtet werden, da es sich um entwickler- / maschinenspezifische lokale Einstellungen handelt.

GitHub verwaltet eine Liste der vorgeschlagenen Dateitypen, die Visual Studio-Benutzer unter https://github.com/github/gitignore/blob/master/VisualStudio.gitignore ignorieren können

Für svn habe ich den folgenden global-ignoreEigenschaftssatz:

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

Stephen Kennedy
quelle
1

Wenn Sie Ihre ausführbaren Verzeichnisabhängigkeiten unter ProjectProperties> Debugging> Environment festlegen, werden die Pfade in '.user'-Dateien gespeichert.

Angenommen, ich setze diese Zeichenfolge in das oben genannte Feld: "PATH = C: \ xyz \ bin". So wird sie in der '.user'-Datei gespeichert:

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

Dies hat uns bei der Arbeit in OpenCV sehr geholfen. Wir könnten verschiedene Versionen von OpenCV für verschiedene Projekte verwenden. Ein weiterer Vorteil ist, dass es sehr einfach war, unsere Projekte auf einer neuen Maschine einzurichten. Wir mussten nur die entsprechenden Abhängigkeitsverzeichnisse kopieren. Bei einigen Projekten ziehe ich es vor, die '.user' zur Quellcodeverwaltung hinzuzufügen.

Auch wenn es völlig von Projekten abhängig ist. Sie können einen Anruf nach Ihren Wünschen entgegennehmen.

adheen
quelle
Symbolische Links funktionieren auch für diesen Zweck sehr gut.
sɐunıɔ ןɐ qɐp
1

Wie in anderen Antworten, die beide .suound .usernicht zur Quellcodeverwaltung hinzugefügt werden sollte, da sie Benutzer / maschinenspezifische (BTW sind .suofür neueste Versionen von VS wurde in spezielles temporäres Verzeichnis verschoben.vs , die vollständig von Quellen Kontrolle gehalten werden sollen).

Allerdings , wenn Ihre Anwendung einig Setup - Umgebung erfordert für das Debuggen in VS (sind solche Einstellungen in der Regel in gehaltenen .userDatei), kann es nützlich sein , eine Beispieldatei (Namensgebung wie vorzubereiten .user.SAMPLE) , und fügen Sie die Quellcodeverwaltung für Referenzen.

Anstelle eines fest codierten absoluten Pfads in einer solchen Datei ist es sinnvoll, relative Pfade zu verwenden oder sich auf Umgebungsvariablen zu verlassen, sodass das Beispiel möglicherweise generisch genug ist, um von anderen problemlos wiederverwendet werden zu können.

AntonK
quelle