Quali tipi di file Visual C ++ devono essere impegnati nel controllo versione?


170

Quali tipi di file Visual Studio \ Visual C ++ devono essere sottoposti al controllo della versione?
Nel mio progetto ho i seguenti tipi di file:

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

Gradirei molto un breve ragionamento per ciascuno. Se qualcuno di loro è controverso, si prega di notare. Sto includendo intenzionalmente anche tipi di file banali per completezza.

MODIFICARE

Da un lato vorrei essere indipendente dalla piattaforma in futuro. D'altra parte, nel prossimo futuro, vorrei lavorare con i membri del team con configurazioni simili. La compatibilità delle cartelle tra le configurazioni è certamente un'opzione, quindi i file di configurazione che contengono percorsi possono essere inclusi se facilita il flusso di lavoro.
Ancora una volta, apprezzerei sicuramente una spiegazione.


23
Caspita, questa domanda è una vera testimonianza del crescente numero di file temporanei che VS insiste nel creare nella directory del tuo progetto.
Nik Reiman,

@Nik: non si trovano nella directory del progetto.
Hans Passant,

1
@Hans, sono lì o sotto una sottodirectory del progetto
Nik Reiman,

@Nik: non il goo msbuild. Che presumo tu intendessi con i file temporanei. Sono d'accordo, non è carino.
Hans Passant,

6
Ti invito a provare l'ambiente di sviluppo ISE di Xilinx (per la programmazione HDL) e vedere quanti file temporanei vengono emessi. Centinaia di file con centinaia di estensioni :) Parla di un casino. Visual Studio è molto pulito in confronto.
Mark Lakata,

Risposte:


232

Sì:

  • cpp: codice sorgente
  • filtri: file di progetto
  • h: codice sorgente
  • ico: risorsa
  • rc: script di risorse
  • rc2: script di risorse
  • sln: file di progetto
  • txt: elemento del progetto
  • vcxproj: file di progetto

No:

  • aps: ultimo stato dell'editor delle risorse
  • exe: crea il risultato
  • idb: stato build
  • ipch: build helper
  • lastbuildstate: build helper
  • lib: compila il risultato. Può essere di terze parti
  • log: crea log
  • manifest: build helper. Puoi scrivere tu stesso.
  • obj: build helper
  • pch: build helper
  • pdb: crea il risultato
  • res: build helper
  • sdf: intellisense dbase
  • suo: soluzione opzioni utente
  • tlog: registro di compilazione
  • utente: impostazioni di debug. Conserva se solo uno sviluppatore o impostazioni di debug personalizzate

Molti di questi sono incerti perché possono entrambi essere generati automaticamente e mantenuti da soli. E ce ne sono molti altri che non compaiono nel tuo elenco. Prestare principalmente attenzione alla posizione del file. Se è nella directory della soluzione o del progetto, è molto probabile che tu voglia controllarlo. Nelle sottodirectory Debug o Release è altamente improbabile. Build + Clean rimuove molti file di rumore. E ovviamente: check-in, rinomina la directory del progetto, check-out e verifica che si compili.


Questo è molto utile. Il mio progetto ha anche un .vcb (questo progetto è stato convertito da una versione precedente (eVC), quindi potrebbe essere correlato a questo.
Robbie Matthews,

E i .vcxproj.filtersfile?
John Alexiou,

1
Anche NO per .OPENSDF
Zam,

1
@ ja72 filterssono stati nella lista "sì" dalla prima revisione della risposta
Asteroids With Wings

26

Dalla tua lista sceglierei quelli:

cpp
filters
h
ico
manifest
rc
rc2
sln
txt
vcxproj

In genere, è necessario eseguire la versione di tutti i file necessari per compilare il progetto. I file generati automaticamente non devono essere archiviati imho.


@ milan1612 grazie per l'elenco conciso. Rispetto alla risposta di Hans Passant, hai detto che avrei dovuto impegnare file manifest dove lui ha detto che non avrei dovuto. Potresti elaborare cosa significa questo file e perché pensi che dovrei impegnarlo, specialmente in un ambiente di squadra (e futuro multipiattaforma), se pertinente?
Jonathan,

3
i manifest possono avere scopi diversi. Ho creato manualmente quelli inclusi in un file di risorse che ha portato Windows ad applicare gli stili alla mia finestra. inoltre, ci sono manifest che ti consentono di distribuire le DLL di libreria standard insieme al tuo eseguibile. pensa ai meta-dati sulla tua applicazione ...
Milano,

@ milan1612 - Ho riscontrato un altro tipo - suo, dovrebbe essere aggiunto anche questo? in tal caso, potresti aggiungerlo al tuo elenco per completezza?
Jonathan,

3
@Jonathan Il suo contiene dati specifici dello sviluppatore relativi alla soluzione (come quali file sono aperti o quali cartelle sono aperte / compresse in Esplora soluzioni). Pertanto, non dovrebbe essere nel controllo versione.
Daniel Rose,

1
@ milan1612 - Dopo l'input di Daniel Rose, potresti rimuovere il suo dalla tua lista?
Jonathan,

17

Come suggerito da Microsoft, i tipi di file che dovrebbero essere inclusi nel controllo versione:

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

Tipi di file che non dovrebbero essere inclusi in:

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

Ma nel caso in cui si utilizzi uno strumento esterno nel file exe o nella libreria esterna, penso che dovrebbe essere incluso anche nel controllo della versione

INFORMAZIONI: Quali file di Visual c ++ aggiungere al controllo del codice sorgente

Inoltre, questo collegamento descrive i tipi di file per i progetti Visual C ++ in Visual Studio 2017.


7

Se fai clic con il pulsante destro del mouse sul progetto, nel menu di scelta rapida dovrebbe essere presente l'opzione "Aggiungi soluzione al controllo del codice sorgente".

Se lo usi, verranno aggiunti solo i file necessari. Tutti i file intermedi e di output verranno ignorati.


4

Le altre risposte sono eccellenti; Ho solo pensato di contribuire con un piccolo strumento utile. Dai un'occhiata al modello .gitignore di Visual Studio su GitHub. È un bel elenco di file gestiti attivamente che normalmente vengono esclusi dal controllo della versione.

E mentre ci sei, l'intero repository gitignore è una risorsa molto utile per tutti i tipi di sviluppo da ActionScript a Zend . Se non usi Git, puoi comunque usare i file gitignore come riferimento.


1

In generale, è necessario aggiungere tutti i file che compaiono in Esplora soluzioni al controllo versione. Inoltre, è necessario includere i file .sln (file di soluzione) e .vcproj / .vcxproj / .vbproj / .csproj (file di progetto).

Si noti che se si dispone di un plug-in di controllo del codice sorgente per Visual Studio, come TFS o AnkhSvn, non è necessario preoccuparsene esplicitamente. Visual Studio sa quali file devono essere nel controllo versione e fornisce i dati al plugin di controllo del codice sorgente. Solo se usi uno strumento esterno (es. TortoiseSVN) devi avere un tale elenco.


0

Solo le onces necessarie per costruire il tuo obiettivo. Penso che questo sia solo .cpp .h .ico .rc .txt .manifest .rc2

Non so cosa sia sdf, aps, filtri, l'utente, non li ho visti nelle mie build C ++.

Basta cercare e scoprire se contengono codice scritto del programmatore o se sono generati da VS.


4
.sln e .vcxproj sono sicuramente necessari: descrivono il progetto e la soluzione.
sharptooth,

Sì, se non gestisci i makefile. Mi dispiace, sono personalmente così Anti-VS / MS che ho dimenticato che ci sono persone che usano Visual Studio come unico strumento per i loro sviluppatori. Sto solo usando il debugger.
Lothar,

3
bene, anche i file del progetto VS sono makefile
Milano,

-2

Contrariamente a quanto affermato in una risposta precedente, vorrei sottolineare che sembra importante controllare la versione del file .opt al fine di tenere traccia delle opzioni dell'utente. Vedi riferimento sotto:

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


1
I file .opt controllano l' aspetto dell'IDE, non il modo in cui viene compilato il programma. Quindi quello che ti senti bene con l'IDE non è necessariamente buono in altre prospettive
phuclv
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.