Jenis file Visual C ++ mana yang harus dikomit ke kontrol versi?

170

Tipe file Visual Studio \ Visual C ++ mana yang harus dikomit ke kontrol versi?
Dalam proyek saya, saya memiliki jenis file berikut:

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

Saya akan sangat menghargai alasan singkat untuk masing-masing. Jika ada di antara mereka yang kontroversial, harap dicatat. Saya sengaja memasukkan jenis file yang bahkan sepele untuk kelengkapan.

EDIT

Di satu sisi saya ingin menjadi platform mandiri di masa depan. Di sisi lain dalam waktu dekat saya ingin bekerja dengan anggota tim dengan pengaturan serupa. Kompatibilitas folder antara pengaturan tentu saja merupakan opsi, jadi file konfigurasi yang menahan jalur dapat dimasukkan jika memudahkan alur kerja.
Sekali lagi, saya pasti akan menghargai penjelasan apa itu.

Jonathan
sumber
23
Wow, pertanyaan ini adalah bukti nyata dari semakin banyaknya file sementara yang bersikeras dibuat di direktori proyek Anda.
Nik Reiman
@ Nik: mereka tidak ada dalam direktori proyek.
Hans Passant
1
@Hans, mereka ada di sana atau di bawah subdirektori proyek
Nik Reiman
@ Nik: bukan msbuild goo. Yang saya asumsikan Anda maksud dengan file temp. Saya setuju, itu tidak cantik.
Hans Passant
6
Saya mengundang Anda untuk mencoba lingkungan pengembangan ISE Xilinx (untuk pemrograman HDL), dan melihat berapa banyak file sementara yang dikeluarkan. Ratusan file dengan ratusan ekstensi :) Bicara tentang kekacauan. Visual Studio sangat bersih dibandingkan.
Mark Lakata

Jawaban:

232

Iya:

  • cpp: kode sumber
  • filter: file proyek
  • h: kode sumber
  • ico: sumber daya
  • rc: skrip sumber daya
  • rc2: skrip sumber daya
  • sln: file proyek
  • txt: elemen proyek
  • vcxproj: file proyek

Tidak:

  • aps: status editor sumber daya terakhir
  • exe: hasil build
  • idb: build state
  • ipch: build helper
  • lastbuildstate: build helper
  • Lib: hasil pembangunan. Bisa jadi pihak ketiga
  • log: build log
  • manifes: bangun pembantu. Dapat ditulis sendiri.
  • obj: build helper
  • pch: build helper
  • pdb: hasil build
  • res: build helper
  • sdf: intellisense dbase
  • suo: solusi opsi pengguna
  • tlog: build log
  • pengguna: pengaturan debug. Lakukan pertahankan jika hanya satu dev atau pengaturan debug khusus

Beberapa di antaranya rapuh karena keduanya dapat dibuat sendiri dan dikelola sendiri. Dan ada beberapa lagi yang tidak muncul dalam daftar Anda. Terutama memperhatikan lokasi file. Jika ada di direktori solusi atau proyek Anda maka sangat mungkin Anda ingin memeriksanya. Di subdirektori Debug atau Rilis maka sangat tidak mungkin. Build + Clean menghapus banyak file noise. Dan tentu saja: check-in, ganti nama direktori proyek, check-out dan verifikasi bahwa itu dibangun.

Hans Passant
sumber
Ini sangat berguna. Proyek saya juga memiliki .vcb (proyek ini dikonversi dari versi yang lebih lama (eVC) jadi mungkin terkait dengan itu.
Robbie Matthews
Bagaimana dengan .vcxproj.filtersfile?
John Alexiou
1
Juga TIDAK untuk .OPENSDF
Zam
1
@ ja72 filterssudah ada di daftar "ya" sejak revisi pertama jawabannya
Asteroids With Wings
26

Dari daftar Anda, saya akan memilih mereka:

cpp
filters
h
ico
manifest
rc
rc2
sln
txt
vcxproj

Secara umum, Anda harus membuat versi semua file yang diperlukan untuk membangun proyek. File yang dibuat secara otomatis tidak boleh diarsipkan dengan imho.

Milan
sumber
@ milan1612 terima kasih atas daftar ringkasnya. Dibandingkan dengan jawaban Hans Passant, Anda mengatakan saya harus membuat file manifes di mana dia mengatakan saya tidak boleh. Bisakah Anda menguraikan apa arti file ini dan mengapa menurut Anda saya harus melakukan itu, terutama di lingkungan tim (dan lintas platform masa depan), jika itu relevan?
Jonathan
3
manifes dapat memiliki tujuan yang berbeda. Saya sudah secara manual membuat yang dimasukkan ke dalam file sumber daya yang menyebabkan windows menerapkan gaya ke jendela saya. juga, ada manifes yang memungkinkan Anda untuk menyebarkan pustaka standar dll di samping executable Anda. pikirkan meta-data tentang aplikasi Anda ...
Milan
@ milan1612 - Saya telah menemukan tipe tambahan - suo, haruskah ini ditambahkan juga? jika demikian, dapatkah Anda menambahkannya ke daftar untuk kelengkapan?
Jonathan
3
@ Jonathan Suo menyimpan data khusus pengembang terkait dengan solusi (seperti file mana yang terbuka atau folder mana yang terbuka / diciutkan dalam explorer solusi). Dengan demikian, seharusnya tidak ada dalam kontrol versi.
Daniel Rose
1
@ milan1612 - Mengikuti masukan Daniel Rose, dapatkah Anda menghapus suo dari daftar Anda?
Jonathan
17

Seperti yang disarankan oleh Microsoft, tipe file yang harus dimasukkan dalam kontrol versi:

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

Jenis file yang tidak boleh dimasukkan dalam:

.pch, .mdp, .ncb, .clw, .obj, .exe, .aps, .ck, .awk, .exp, .libb .idb, .opt, .pdb, .map, .res, .ilk , .scc, .bsc, .sbr, .dll, dan .tlb ...

Tetapi jika menggunakan alat eksternal dalam file exe atau perpustakaan eksternal maka saya pikir itu juga harus dimasukkan dalam kontrol versi

INFO: File Visual C ++ mana yang akan ditambahkan ke kontrol kode sumber

Selain itu, tautan ini menjelaskan Jenis File untuk Proyek Visual C ++ di Visual Studio 2017.

phuclv
sumber
7

Jika Anda mengklik kanan proyek tersebut, harus ada opsi "Tambahkan Solusi ke Kontrol Sumber" di menu konteks.

Jika Anda menggunakan ini, hanya file-file yang diperlukan yang akan ditambahkan. Semua file antara dan keluaran akan diabaikan.

ChrisF
sumber
4

Jawaban lainnya sangat bagus; Saya hanya berpikir saya akan berkontribusi alat kecil yang bermanfaat. Lihat templat Visual Studio .gitignore di GitHub. Ini adalah daftar file yang dikelola secara aktif dan bagus, yang biasanya di luar kendali versi.

Dan saat Anda melakukannya, seluruh repositori gitignore adalah sumber daya yang sangat berguna untuk semua jenis pengembangan dari ActionScript hingga Zend . Jika Anda tidak menggunakan Git, Anda masih dapat menggunakan file gitignore sebagai referensi.

Phil
sumber
1

Secara umum, Anda harus menambahkan semua file yang muncul di Solution Explorer ke kontrol versi. Selain itu, Anda harus menyertakan file .sln (file solusi) dan .vcproj / .vcxproj / .vbproj / .csproj (file proyek).

Perhatikan bahwa jika Anda memiliki plugin kontrol sumber untuk Visual Studio, seperti TFS atau AnkhSvn, tidak perlu peduli secara eksplisit tentang hal ini. Visual Studio tahu file mana yang perlu di kontrol versi dan memberikan data ke plugin kontrol sumber. Hanya jika Anda menggunakan alat eksternal (mis. TortoiseSVN) Anda perlu memiliki daftar seperti itu.

Daniel Rose
sumber
0

Hanya onces yang diperlukan untuk membangun target Anda. Saya pikir ini hanya .cpp .h .ico .rc .txt .manifest .rc2

Saya tidak tahu apa itu sdf, aps, filter, pengguna, belum melihatnya di C ++ saya.

Lihat dan cari tahu apakah mereka mengandung kode tertulis programmer atau jika mereka dihasilkan oleh VS.

Lothar
sumber
4
.sln dan .vcxproj diperlukan untuk memastikan - mereka menggambarkan proyek dan solusinya.
sharptooth
Ya, jika Anda tidak memelihara makefile. Maaf saya pribadi sehingga Anti-VS / MS bahwa saya lupa bahwa ada orang yang menggunakan Visual Studio sebagai satu-satunya alat untuk pengembang mereka. Saya hanya menggunakan debugger.
Lothar
3
well, file proyek VS juga makefiles
Milan
-2

Berlawanan dengan apa yang dinyatakan dalam jawaban sebelumnya, saya ingin menunjukkan bahwa tampaknya penting untuk mengontrol versi file .opt untuk melacak opsi pengguna. Lihat referensi di bawah ini:

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

mitch
sumber
1
File .opt mengontrol tampilan dan nuansa IDE, bukan cara program Anda dikompilasi. Jadi apa yang Anda rasakan baik tentang IDE belum tentu bagus dalam perspektif orang lain
phuclv