Welche Visual C ++ - Dateitypen sollten für die Versionskontrolle festgeschrieben werden?

170

Welche Dateitypen von Visual Studio \ Visual C ++ sollten für die Versionskontrolle festgeschrieben werden?
In meinem Projekt habe ich folgende Dateitypen:

aps
cpp
exe
filters
h
ico
idb
ipch
lastbuildstate
lib
log
manifest
obj
pch
pdb
rc
rc2
res
sdf
sln
suo
tlog
txt
user
vcxproj

Ich würde mich sehr über eine kurze Begründung für jeden freuen. Wenn einer von ihnen umstritten ist, beachten Sie dies bitte. Der Vollständigkeit halber füge ich absichtlich sogar triviale Dateitypen hinzu.

BEARBEITEN

Einerseits möchte ich in Zukunft plattformunabhängig sein. Andererseits möchte ich in naher Zukunft mit Teammitgliedern mit ähnlichen Einstellungen zusammenarbeiten. Die Ordnerkompatibilität zwischen den Setups ist sicherlich eine Option, sodass Konfigurationsdateien mit Pfaden enthalten sein können, wenn dies den Workflow vereinfacht.
Auch hier würde ich mich sicherlich über eine Erklärung freuen, was was ist.

Jonathan
quelle
23
Wow, diese Frage ist ein echter Beweis für die wachsende Anzahl temporärer Dateien, die VS im Verzeichnis Ihres Projekts erstellen möchte.
Nik Reiman
@Nik: Sie befinden sich nicht im Projektverzeichnis.
Hans Passant
1
@ Hans, sie sind entweder da oder unter einem Projekt-Unterverzeichnis
Nik Reiman
@Nik: nicht die msbuild goo. Was ich nehme an, Sie meinten mit den temporären Dateien. Ich stimme zu, es ist nicht schön.
Hans Passant
6
Ich lade Sie ein, die ISE-Entwicklungsumgebung von Xilinx (für die HDL-Programmierung) auszuprobieren und zu sehen, wie viele temporäre Dateien ausgegeben werden. Hunderte von Dateien mit Hunderten von Erweiterungen :) Sprechen Sie über ein Durcheinander. Visual Studio ist im Vergleich sehr sauber.
Mark Lakata

Antworten:

232

Ja:

  • cpp: Quellcode
  • Filter: Projektdatei
  • h: Quellcode
  • ico: Ressource
  • rc: Ressourcenskript
  • rc2: Ressourcenskript
  • sln: Projektdatei
  • txt: Projektelement
  • vcxproj: Projektdatei

Nein:

  • aps: letzter Status des Ressourceneditors
  • exe: Build-Ergebnis
  • idb: Build-Status
  • ipch: Helfer bauen
  • lastbuildstate: Helfer bauen
  • lib: Ergebnis erstellen. Kann Drittanbieter sein
  • Protokoll: Protokoll erstellen
  • Manifest: Helfer bauen. Kann selbst geschrieben werden.
  • obj: Helfer bauen
  • pch: Helfer bauen
  • pdb: Build-Ergebnis
  • res: Helfer bauen
  • sdf: Intellisense-Datenbank
  • suo: Lösungsbenutzeroptionen
  • tlog: Protokoll erstellen
  • Benutzer: Debug-Einstellungen. Behalten Sie bei, wenn nur ein Entwickler oder benutzerdefinierte Debug-Einstellungen vorhanden sind

Einige davon sind zweifelhaft, da sie automatisch generiert und selbst gewartet werden können. Und es gibt noch einige, die nicht in Ihrer Liste erscheinen. Achten Sie in erster Linie auf den Speicherort der Datei. Wenn es sich in Ihrem Lösungs- oder Projektverzeichnis befindet, möchten Sie es höchstwahrscheinlich einchecken. In den Unterverzeichnissen Debug oder Release ist dies höchst unwahrscheinlich. Build + Clean entfernt viele Rauschdateien. Und natürlich: Einchecken, Projektverzeichnis umbenennen, auschecken und überprüfen, ob es erstellt wurde.

Hans Passant
quelle
Das ist sehr nützlich. Mein Projekt hat auch eine .vcb (dieses Projekt wurde von einer älteren Version (eVC) konvertiert, kann also damit zusammenhängen.
Robbie Matthews
Was ist mit .vcxproj.filtersDateien?
John Alexiou
1
Auch NEIN für .OPENSDF
Zam
1
@ ja72 filterssind seit der ersten Überarbeitung der Antwort in der "Ja" -Liste
Asteroids With Wings
26

Aus Ihrer Liste würde ich folgende auswählen:

cpp
filters
h
ico
manifest
rc
rc2
sln
txt
vcxproj

Im Allgemeinen sollten Sie alle zum Erstellen des Projekts erforderlichen Dateien versionieren. Automatisch generierte Dateien sollten nicht imho archiviert werden.

Mailand
quelle
@ milan1612 danke für die prägnante liste. Im Vergleich zu Hans Passants Antwort sagten Sie, ich sollte Manifestdateien festschreiben, wo er sagte, ich sollte nicht. Könnten Sie näher erläutern, was diese Datei bedeutet und warum ich sie Ihrer Meinung nach festlegen sollte, insbesondere in einer Teamumgebung (und einer zukünftigen plattformübergreifenden Umgebung), wenn dies relevant ist?
Jonathan
3
Manifeste können unterschiedliche Zwecke haben. Ich habe diejenigen manuell erstellt, die in eine Ressourcendatei aufgenommen wurden, wodurch Fenster Stile auf mein Fenster angewendet haben. Außerdem gibt es Manifeste, mit denen Sie die Standardbibliotheks-DLLs neben Ihrer ausführbaren Datei bereitstellen können. Denken Sie an Metadaten über Ihre Anwendung ...
Mailand
@ milan1612 - Ich habe einen zusätzlichen Typ gefunden - suo, sollte dieser auch hinzugefügt werden? Wenn ja, können Sie es der Vollständigkeit halber zu Ihrer Liste hinzufügen?
Jonathan
3
@Jonathan Der Suo enthält entwicklerspezifische Daten zur Lösung (z. B. welche Dateien geöffnet sind oder welche Ordner im Lösungs-Explorer geöffnet / reduziert sind). Daher sollte es nicht in der Versionskontrolle sein.
Daniel Rose
1
@ milan1612 - Könnten Sie nach der Eingabe von Daniel Rose das Suo von Ihrer Liste entfernen?
Jonathan
17

Wie von Microsoft vorgeschlagen, Dateitypen, die in die Versionskontrolle einbezogen werden sollten:

.mak, .dsp, .c, .rc, .rc2, .ico, .bmp, .txt, .def, .hpj, .bat, .rtf, .odl, .inf, .reg, .cnt, .cpp , .cxx, .h, .hpp, .hxx, .inl, .tpl, .vtp und .mst ...

Dateitypen, die nicht enthalten sein sollten in:

.pch, .mdp, .ncb, .clw, .obj, .exe, .aps, .cpl, .awk, .exp, .lib, .idb, .opt, .pdb, .map, .res, .ilk , .scc, .bsc, .sbr, .dll und .tlb ...

Wenn Sie jedoch ein externes Tool in einer exe-Datei oder einer externen Bibliothek verwenden, sollte es meiner Meinung nach auch in die Versionskontrolle einbezogen werden

INFO: Welche Visual C ++ - Dateien zur Quellcodeverwaltung hinzugefügt werden sollen

Darüber hinaus beschreibt dieser Link die Dateitypen für Visual C ++ - Projekte in Visual Studio 2017.

phuclv
quelle
7

Wenn Sie mit der rechten Maustaste auf das Projekt klicken, sollte im Kontextmenü die Option "Lösung zur Quellcodeverwaltung hinzufügen" angezeigt werden.

Wenn Sie dies verwenden, werden nur die erforderlichen Dateien hinzugefügt. Alle Zwischen- und Ausgabedateien werden ignoriert.

ChrisF
quelle
4

Die anderen Antworten sind ausgezeichnet; Ich dachte nur, ich würde ein nützliches kleines Werkzeug beisteuern. Überprüfen Sie die Visual Studio .gitignore-Vorlage auf GitHub. Es ist eine schöne, aktiv gepflegte Liste von Dateien, die normalerweise außerhalb der Versionskontrolle gehalten werden.

Und wenn Sie schon dabei sind, ist das gesamte Gitignore-Repository eine sehr nützliche Ressource für alle Arten von Entwicklungen von ActionScript bis Zend . Wenn Sie Git nicht verwenden, können Sie die Gitignore-Dateien weiterhin als Referenz verwenden.

Phil
quelle
1

Im Allgemeinen sollten Sie alle Dateien, die im Projektmappen-Explorer angezeigt werden, zur Versionskontrolle hinzufügen. Außerdem müssen Sie die Dateien .sln (Lösungsdatei) und .vcproj / .vcxproj / .vbproj / .csproj (Projektdatei) einschließen.

Beachten Sie, dass Sie sich nicht explizit darum kümmern müssen, wenn Sie ein Quellcodeverwaltungs-Plugin für Visual Studio wie TFS oder AnkhSvn haben. Visual Studio weiß, welche Dateien in der Versionskontrolle sein müssen, und gibt die Daten an das Quellcodeverwaltungs-Plugin weiter. Nur wenn Sie ein externes Tool (z. B. TortoiseSVN) verwenden, benötigen Sie eine solche Liste.

Daniel Rose
quelle
0

Nur die Einsen, die zum Erstellen Ihres Ziels erforderlich sind. Ich denke, das ist nur .cpp .h .ico .rc .txt .manifest .rc2

Ich weiß nicht, was SDF, APS, Filter, Benutzer ist, habe sie in meinen C ++ - Builds nicht gesehen.

Schauen Sie einfach nach und finden Sie heraus, ob sie vom Programmierer geschriebenen Code enthalten oder von VS generiert werden.

Lothar
quelle
4
.sln und .vcxproj werden auf jeden Fall benötigt - sie beschreiben das Projekt und die Lösung.
Scharfzahn
Ja, wenn Sie keine Makefiles pflegen. Es tut mir leid, dass ich persönlich so gegen VS / MS bin, dass ich vergessen habe, dass es Leute gibt, die Visual Studio als einziges Tool für ihre Entwickler verwenden. Ich benutze nur den Debugger.
Lothar
3
Nun, die VS-Projektdateien sind auch Makefiles
Mailand
-2

Im Gegensatz zu dem, was in einer früheren Antwort angegeben wurde, möchte ich darauf hinweisen, dass es wichtig zu sein scheint, die .opt-Datei zu versionieren, um die Benutzeroptionen im Auge zu behalten. Siehe Referenz unten:

https://msdn.microsoft.com/en-us/library/aa278994(v=vs.60).aspx

Mitchell
quelle
1
.opt-Dateien steuern das Erscheinungsbild der IDE und nicht die Art und Weise, wie Ihr Programm kompiliert wird. Also, was Sie über die IDE gut fühlen, ist in anderer Perspektive nicht unbedingt gut
phuclv