Haruskah saya menambahkan file Visual Studio .suo dan .user ke kontrol sumber?

841

Solusi Visual Studio berisi dua jenis file pengguna tersembunyi. Salah satunya adalah .suofile solusi yang merupakan file biner. Yang lainnya adalah .userfile proyek yang merupakan file teks. Data apa yang terkandung dalam file-file ini?

Saya juga bertanya-tanya apakah saya harus menambahkan file-file ini ke kontrol sumber (Subversion dalam kasus saya). Jika saya tidak menambahkan file ini dan pengembang lain memeriksa solusinya, apakah Visual Studio akan secara otomatis membuat file pengguna baru?

Ben Mills
sumber
9
File .suo dibuat ulang secara otomatis. Cara yang bagus untuk 'menyegarkan' pengaturan Anda ke default jika ada masalah.
CodingBarfield
3
Praktik terbaik untuk proyek Subversion dan Visual Studio adalah pertanyaan yang lebih umum tentang topik yang tepat ini. Juga jawaban yang diterima berisi tautan ke dokumentasi resmi MSDN, yang menjelaskan secara rinci file / direktori solusi / proyek VS mana yang harus ditambahkan ke sistem kontrol sumber, dan bagian mana yang harus diabaikan.
Attila Csipak
3
untuk * .suo, silakan lihat di sini: msdn.microsoft.com/en-us/library/bb165909.aspx
smwikipedia

Jawaban:

673

File-file ini berisi konfigurasi preferensi pengguna yang secara umum khusus untuk mesin Anda, jadi lebih baik untuk tidak memasukkannya ke dalam SCM. Juga, VS akan mengubahnya hampir setiap kali Anda menjalankannya, jadi itu akan selalu ditandai oleh SCM sebagai 'diubah'. Saya juga tidak memasukkan, saya dalam proyek menggunakan VS selama 2 tahun dan tidak punya masalah melakukan itu. Satu-satunya gangguan kecil adalah bahwa parameter debug (jalur eksekusi, target penempatan, dll.) Disimpan di salah satu file tersebut (tidak tahu yang mana), jadi jika Anda memiliki standar untuk itu, Anda tidak akan bisa ' terbitkan 'itu melalui SCM untuk pengembang lain agar seluruh lingkungan pengembangan' siap digunakan '.

Fabio Ceconello
sumber
22
Hati-hati, file suo menyimpan informasi apakah proyek dimuat / dibongkar dalam solusi.
Kugel
5
Saya percaya ini menyimpan info debug dalam file .user (setidaknya untuk Alat Data Server SQL). Juga, ketika Anda mengubah pengaturan di tab Debug, itu tidak selalu bertahan. Pengguna langsung (menutup solusi tampaknya bekerja, sedikit mengganggu ... atau mengubah pengaturan lain yang disimpan dalam file .sqlproj).
jamiebarrow
87
Anda dapat membuka file .user dan .csproj di editor teks apa pun. Saya baru saja menguji copy-paste pengaturan debug yang relevan dari .user ke .csproj, kemudian menghapus file .user. Debugging terus bekerja, dengan senang hati membaca pengaturan yang benar dari lokasi baru mereka di file .csproj. Ini harus menyediakan cara untuk melakukan pengaturan debug tanpa melakukan file .user. Pastikan Anda meletakkannya di konfigurasi yang benar (debug, rilis, dll). Bekerja pada mesin saya! =)
Chris Nielsen
139

Anda tidak perlu menambahkan ini - itu berisi pengaturan per pengguna, dan pengembang lain tidak akan menginginkan salinan Anda.

Steve Cooper
sumber
19
Jika Anda bekerja sendiri pada beberapa mesin yang berbeda, apakah akan layak untuk menambahkannya?
thepocketwade
33
Saya tidak mau, karena mungkin rapuh terhadap perbedaan sistem yang tidak terduga; misalnya, jika Anda bekerja di x64 di tempat kerja dan x86 di rumah, maka itu mungkin mencekik "c: \ program files (x86)" dan "c: \ program files". Saya tidak tahu, tetapi saya tidak akan mengambil risiko.
Steve Cooper
2
Meskipun mereka berisi informasi spesifik pengguna, tetapi informasi file yang baru ditambahkan melalui (termasuk dalam proyek) opsi juga dalam file .csproj saya pikir, yang mengharuskan pengguna lain untuk secara manual menambahkan semua sumber daya proyek yang baru ditambahkan. Jika ada yang tahu solusinya, silakan sebutkan di sini.
zeppelin
69

Yang lain telah menjelaskan mengapa memiliki *.suodan *.userfile di bawah kendali sumber bukan ide yang baik.

Saya ingin menyarankan Anda menambahkan pola ini ke svn:ignoreproperti karena 2 alasan:

  1. Jadi pengembang lain tidak akan berakhir dengan pengaturan satu pengembang.
  2. Jadi ketika Anda melihat status, atau melakukan file, file-file itu tidak akan mengacaukan basis kode dan mengaburkan file baru yang perlu Anda tambahkan.
JXG
sumber
Di mana dan bagaimana svn:ignoreproperti diatur?
Peter Mortensen
@PeterMortensen, lihat pertanyaan ini: stackoverflow.com/questions/86049/…
JXG
Tetapi ada kasus (lihat jawaban ini ) untuk menambahkan .user, jadi seseorang dapat memilih untuk tidak mengabaikan saja .suo- atau seseorang dapat mengabaikan .user, sehingga dibutuhkan keputusan sadar untuk menambahkannya? Jangan berpikir begitu, maksudnya svn:ignoreadalah menandai hal-hal di mana tidak ada keputusan sadar yang dibutuhkan.
PJTraill
49

Kami tidak melakukan file biner (* .suo), tetapi kami melakukan file .user. File .user berisi misalnya opsi mulai untuk men-debug proyek. Anda dapat menemukan opsi mulai di properti proyek di tab "Debug". Kami menggunakan NUnit di beberapa proyek dan mengonfigurasi nunit-gui.exe sebagai opsi awal untuk proyek tersebut. Tanpa file .user, setiap anggota tim harus mengkonfigurasinya secara terpisah.

Semoga ini membantu.

Thomas
sumber
4
Saya juga mulai berpikir ini harusnya terjadi - komit file pengguna sehingga pengembang dalam tim menggunakan pengaturan debug yang sama. Jika mereka mengubahnya di komputer mereka sendiri, masih baik-baik saja, asalkan cara standar adalah versi dalam kontrol sumber.
jamiebarrow
1
Yang lain menyarankan untuk tidak melakukan ini, tetapi saya tidak yakin apa bahayanya. Mungkin karena file repo dengan pengaturan yang kurang tepat akan menghilangkan salinan lokal pengguna (lebih baik)? (Tim kami menggunakan Mercurial, BTW.)
Jon Coombs
2
Microsoft menyarankan agar tidak menambahkan file .user ke kontrol sumber.
DavidRR
1
Anda dapat memindahkan pengaturan debug ke .csproj, lihat komentar ini
Timbo
26

Karena saya menemukan pertanyaan / jawaban ini melalui Google pada tahun 2011, saya pikir saya akan mengambil satu detik dan menambahkan tautan untuk file * .SDF yang dibuat oleh Visual Studio 2010 ke daftar file yang mungkin tidak boleh ditambahkan ke kontrol versi ( IDE akan membuat ulang mereka). Karena saya tidak yakin bahwa file * .sdf mungkin memiliki penggunaan yang sah di tempat lain, saya hanya mengabaikan file [projectname] .sdf tertentu dari SVN.

Mengapa panduan konversi Visual Studio 2010 membuat file database SDF besar?

Stephen
sumber
2
File SDF mungkin merupakan basis data SQL Server Compact Edition .
Carl G
23

Tidak, Anda tidak harus menambahkannya ke kontrol sumber karena - seperti yang Anda katakan - mereka khusus pengguna.

SUO (Solusi Pilihan Pengguna): Merekam semua opsi yang mungkin Anda kaitkan dengan solusi Anda sehingga setiap kali Anda membukanya, itu termasuk penyesuaian yang telah Anda buat.

File .user berisi opsi pengguna untuk proyek (sementara SUO adalah untuk solusinya) dan memperluas nama file proyek (mis. Anything.csproj.user berisi pengaturan pengguna untuk proyek anything.csproj).

JRoppert
sumber
20

Tampaknya ini adalah pendapat Microsoft tentang masalah ini:

Menambahkan (dan mengedit) .suo file ke kontrol sumber

Saya tidak tahu mengapa proyek Anda menyimpan DebuggingWorkingDirectory dalam file suo. Jika itu adalah pengaturan khusus pengguna Anda harus mempertimbangkan menyimpannya dalam nama file * .proj.user. Jika pengaturan itu dapat dibagikan di antara semua pengguna yang mengerjakan proyek, Anda harus mempertimbangkan untuk menyimpannya di file proyek itu sendiri.

Jangan pernah berpikir untuk menambahkan file suo ke kontrol sumber! File SUO (opsi pengguna soluton) dimaksudkan untuk berisi pengaturan khusus pengguna, dan tidak boleh dibagikan di antara pengguna yang bekerja pada solusi yang sama. Jika Anda akan menambahkan file suo dalam database scc, saya tidak tahu hal-hal lain apa dalam IDE yang akan Anda hancurkan, tetapi dari sudut pandang kontrol sumber, Anda akan memutus proyek web integrasi scc, menggunakan plugin Lan vs Internet. oleh pengguna lain untuk akses VSS, dan Anda bahkan dapat menyebabkan scc rusak total (jalur basis data VSS yang disimpan dalam file suo yang mungkin valid untuk Anda mungkin tidak berlaku untuk pengguna lain).

Alin Constantin (MSFT)

Scott W
sumber
Juga, dari MSDN: Solusi Opsi Pengguna (.Suo) File . Kalimat pertama membuat niat Microsoft cukup jelas: "File opsi pengguna pilihan (.suo) berisi opsi solusi per pengguna. File ini tidak boleh diperiksa ke kontrol kode sumber."
DavidRR
19

Secara default Microsoft Visual SourceSafe tidak menyertakan file-file ini dalam kontrol sumber karena mereka adalah file pengaturan khusus pengguna. Saya akan mengikuti model itu jika Anda menggunakan SVN sebagai kontrol sumber.

cori
sumber
12

Visual Studio akan secara otomatis membuatnya. Saya tidak merekomendasikan menempatkan mereka di kontrol sumber. Ada beberapa kali file SOU pengembang lokal menyebabkan VS berperilaku tidak menentu pada kotak pengembang itu. Menghapus file dan kemudian membiarkan VS menciptakannya selalu memperbaiki masalah.

Anjing polisi
sumber
Saya memiliki file .sou yang tersisa dan memberikan masalah saat memuat ulang paket. Menghapus file .sou memperbaiki masalah. Terima kasih.
mercedes
11

Di situs web MSDN , jelas menyatakan itu

File opsi pengguna solusi (.suo) berisi opsi solusi per pengguna. File ini seharusnya tidak masuk ke kontrol kode sumber .

Jadi saya katakan cukup aman untuk mengabaikan file-file ini sambil memeriksa hal-hal di kontrol sumber Anda.

Farax
sumber
9

Saya tidak akan. Apa pun yang dapat berubah per "pengguna" biasanya tidak baik dalam kontrol sumber. .suo, .user, direktori obj / bin

ScaleOvenStove
sumber
8

File-file ini adalah opsi khusus pengguna, yang harus independen dari solusi itu sendiri. Visual Studio akan membuat yang baru seperlunya, sehingga tidak perlu diperiksa ke kontrol sumber. Memang, mungkin akan lebih baik untuk tidak melakukannya karena ini memungkinkan pengembang individu untuk menyesuaikan lingkungan mereka sesuai keinginan mereka.

bermanfaat
sumber
7

Anda tidak dapat mengontrol sumber file .user, karena itu khusus untuk pengguna. Ini berisi nama mesin jarak jauh dan hal-hal lain yang bergantung pada pengguna. Ini adalah file terkait vcproj.

File .suo adalah file yang terkait dengan sln dan berisi "solusi opsi pengguna" (proyek startup, posisi windows (apa yang merapat dan di mana, apa yang melayang), dll.)

Ini file biner, dan saya tidak tahu apakah itu berisi sesuatu yang "terkait pengguna".

Di perusahaan kami, kami tidak mengambil file-file itu di bawah kendali sumber.

ugasoft
sumber
7

Mereka berisi pengaturan spesifik tentang proyek yang biasanya ditugaskan untuk pengembang tunggal (seperti, misalnya, proyek awal dan halaman awal untuk memulai ketika Anda men-debug aplikasi Anda).

Jadi lebih baik tidak menambahkannya ke kontrol versi, membiarkan VS membuatnya kembali sehingga setiap pengembang dapat memiliki pengaturan spesifik yang mereka inginkan.

massimogentilini
sumber
5

.user adalah pengaturan pengguna, dan saya pikir .suo adalah solusi pilihan pengguna. Anda tidak ingin file-file ini di bawah kendali sumber; mereka akan dibuat ulang untuk setiap pengguna.

Nick
sumber
5

Tidak.

Saya hanya ingin jawaban singkat yang nyata, dan tidak ada.

Pablo Carrasco Hernández
sumber
4

Menggunakan Rasional ClearCase jawabannya adalah tidak. Hanya proj .sln &. * Yang harus didaftarkan dalam kontrol kode sumber.

Saya tidak bisa menjawab untuk vendor lain. Jika saya ingat dengan benar, file-file ini adalah opsi khusus "pengguna", lingkungan Anda.

titanae
sumber
only the .sln & .*proj should be registered- Apakah kamu tidak lupa banyak file di sini?
Wolf
@ Serigala selain yang sudah jelas
Polluks
3

Jangan menambahkan file-file itu ke dalam kontrol versi. File-file ini dihasilkan secara otomatis dengan informasi spesifik stasiun kerja, jika check-in ke kontrol versi yang akan menyebabkan masalah di stasiun kerja lain.

Amila
sumber
2

Tidak, mereka tidak boleh berkomitmen untuk kontrol sumber karena mereka adalah pengaturan lokal khusus pengembang / mesin.

GitHub mempertahankan daftar jenis file yang disarankan untuk diabaikan oleh pengguna Visual Studio di https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

Untuk svn, saya memiliki global-ignoreset properti berikut :

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

Stephen Kennedy
sumber
1

Jika Anda menetapkan dependensi dir yang dapat dieksekusi di ProjectProperties> Debugging> Environment , path disimpan dalam file '.user'.

Misalkan saya mengatur string ini dalam bidang yang disebutkan di atas: "PATH = C: \ xyz \ bin" Ini adalah bagaimana ia akan disimpan dalam file '.user':

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

Ini sangat membantu kami saat bekerja di OpenCV. Kita dapat menggunakan berbagai versi OpenCV untuk berbagai proyek. Keuntungan lain adalah, sangat mudah untuk mengatur proyek kami pada mesin baru. Kami hanya perlu menyalin dir dependensi yang sesuai. Jadi untuk beberapa proyek, saya lebih suka menambahkan '.user' ke kontrol sumber.

Meskipun, itu sepenuhnya tergantung pada proyek. Anda dapat menerima panggilan berdasarkan kebutuhan Anda.

Adheen
sumber
Tautan simbolik juga berfungsi dengan sangat baik untuk tujuan ini.
sɐunıɔ ןɐ qɐp
1

Seperti dijelaskan dalam jawaban lain, keduanya .suodan .usertidak boleh ditambahkan ke kontrol sumber, karena mereka adalah pengguna / mesin-spesifik (BTW .suountuk versi terbaru VS dipindahkan ke direktori sementara khusus .vs, yang harus dijauhkan dari kontrol sumber sepenuhnya).

Namun jika aplikasi Anda memerlukan beberapa pengaturan lingkungan untuk debugging di VS (pengaturan seperti itu biasanya disimpan dalam .userfile), mungkin berguna untuk menyiapkan file sampel (penamaannya seperti .user.SAMPLE) dan menambahkannya ke kontrol sumber untuk referensi.

Alih-alih path absolut hard-coded dalam file tersebut, masuk akal untuk menggunakan yang relatif atau bergantung pada variabel lingkungan, sehingga sampel mungkin cukup umum untuk dengan mudah dapat digunakan kembali oleh orang lain.

AntonK
sumber