Mengapa opsi "Set as Startup" disimpan dalam file suo dan bukan file sln?

175

Sepertinya pengaturan ini harus disimpan dalam file solusi sehingga dibagikan di semua pengguna dan bagian dari kontrol kode sumber. Karena kami tidak memeriksa dalam file suo, setiap pengguna harus mengatur ini secara terpisah yang tampaknya aneh.

leora
sumber

Jawaban:

46

Mengapa harus preferensi non-pengguna?

Jika saya punya solusi dengan 10 file, dan satu pengembang terutama menguji / menggunakan salah satu alat itu, mengapa itu mempengaruhi apa yang saya mulai?

Saya pikir MS membuat pilihan yang tepat untuk yang satu ini. Proyek yang ingin saya mulai masih jauh dari proyek yang ingin dimulai oleh pengembang lain .

Jon Skeet
sumber
133
Seringkali, Anda akan memiliki proyek yang sangat mungkin merupakan proyek startup yang diinginkan kebanyakan orang untuk debugging (mis. Situs web), dan Anda tidak ingin perpustakaan kelas sebagai proyek startup. Saya tidak melihat mengapa MS tidak dapat menyediakan mekanisme yang tepat (bukan apa yang tampak seperti peretasan, mis. Menempatkan yang default di atas dalam file .sln) untuk mengatur proyek startup default global, dan kemudian mengizinkan. suo untuk menimpanya jika diinginkan.
Jez
27
Ada, dengan cara berbicara ... Pindahkan proyek yang ingin Anda tetapkan sebagai proyek memulai default untuk menjadi proyek pertama dalam file sln. Hapus file suo Anda, buka kembali solusinya dan woila, proyek pertama itu haruslah startup. Mungkin ada faktor-faktor lain yang berkontribusi terhadap hal ini, tetapi saya menemukannya ketika saya memperhatikan bahwa salah satu proyek tetap default ketika saya memeriksa proyek bersih dari kontrol sumber.
misteraidan
2
Ini adalah masalah ketika menggunakan server build karena itu akan memerlukan memeriksa suo ke dalam kontrol versi untuk mengatur proyek Startup yang benar dan memeriksa suo ke dalam kontrol versi adalah ide yang buruk.
markshancock
2
@markshancock: Mengapa server membangun peduli tentang proyek startup? Saya tidak pernah melihatnya sebagai masalah.
Jon Skeet
18
Maaf, Jon, tapi aku akan memberimu -1 di sini. Saya percaya bahwa devs harus memiliki kemampuan untuk mengunduh kode dan kemudian menekan F5, mengharapkan pengaturan pengembangan yang paling umum untuk dibangun dan dimulai. Tentu saja, Anda harus memiliki kemampuan untuk menyesuaikan startup Anda untuk keadaan pribadi, tetapi kami harus dapat menetapkan default untuk sebagian besar pengguna, seperti yang dinyatakan di atas. Jawaban Oliver tampaknya cukup untuk melakukan itu, walaupun tampaknya beberapa proyek baru akan tetap mustahil untuk memeriksa kontrol sumber, yang memalukan.
Stephen Holt
376

Sangat penting bahwa setiap orang dapat menentukan sendiri Proyek StartUp mereka, seperti yang telah dikatakan Jon . Tetapi untuk memiliki default yang didedikasikan akan menjadi besar, dan seperti yang saya tahu, itu mungkin!

Jika Anda tidak memiliki file .suo di direktori solusi Anda, Visual Studio memilih proyek pertama dalam file .sln Anda sebagai proyek startup default.

  1. Tutup Visual Studio Anda dan buka file .sln di editor teks favorit Anda. Mulai dari baris 4, Anda melihat semua proyek Anda dienkapsulasi dalam Project- EndProjectline.

  2. Potong dan tempel proyek startup default yang diinginkan ke posisi teratas.

  3. Hapus file .suo Anda.

  4. Buka solusi Anda di Visual Studio. Ta daa!

Apakah ada penghargaan khusus jika Anda tahu sesuatu yang tidak diketahui Jon? ;-)

Oliver
sumber
1
Akhirnya! Ini telah menggangguku sejak lama tapi tidak lagi! Tkanks :)
mdonatas
4
Tampaknya hanya berfungsi jika tidak di folder solusi: Maksud saya trik ini berfungsi untuk proyek root, dari pengalaman saya dengan beberapa solusi yang saya miliki.
jdehaan
25
WOW! Anda Skeeted Jon! :))
Andrei Rînea
3
Bagaimana jika ada dua proyek standar - bagaimana saya bisa memulai keduanya secara default?
Amy B
6
@Liver: Klik kanan Solusi -> Setel Proyek StartUp ... -> Banyak proyek startup. Satu-klik mulai banyak.
Anton
46

Dalam kebanyakan kasus, tidak masuk akal untuk memiliki default pada ini.

Akan jauh lebih baik untuk mengakomodasi proyek startup default dan menyimpan ini dalam file .sln, tetapi yang dapat ditimpa oleh pengembang dalam file .suo mereka. Jika pengaturan startup tidak ditemukan dalam file .suo, proyek startup default di .sln akan digunakan.

Sebenarnya, ini telah disarankan pada UserVoice Visual Studio .

Wim Hollebrandse
sumber
UserVoice yang tertaut "tertutup untuk pemungutan suara" tetapi tidak ada komentar mengapa.
yzorg
Ini jelas merupakan sikap yang lebih baik dibandingkan dengan jawaban yang diterima. Saya belum pernah bekerja dalam tim yang menganggapnya menguntungkan untuk menetapkan ini berdasarkan pengguna. Itu hanya mengarah pada pengaturan tambahan pada klon baru, dll.
Trevor Reid
3

Saya menulis sebuah utilitas baris perintah kecil untuk Windows yang dipanggil slnStartupProjectuntuk mengatur Startup Project secara otomatis:

slnStartupProject slnFilename projectName

Saya pribadi menggunakannya untuk mengatur proyek startup setelah menghasilkan solusi dengan cmake yang selalu menetapkan ALL_BUILDproyek dummy sebagai proyek pertama dalam solusi.

The sumber adalah pada GitHub. Garpu dan umpan balik dipersilakan.

michaK
sumber
Terima kasih untuk ini! Saya mengalami masalah ini dengan cmake dan utilitas Anda berfungsi dengan baik!
sippa
1
Sama-sama! Senang membantu karena telah mengganggu saya selama bertahun-tahun sebelum saya memutuskan untuk menyelesaikannya untuk selamanya. Tidak benar-benar mengerti mengapa orang memiliki pertengkaran filosofis tentang ini sementara itu jelas berguna dalam kebanyakan kasus
michaK
Kamu .. tunggu ... apa? - Anda membuat file .sln Anda secara manual? ... Sihir apa ini?
BrainSlugs83
3

Jika Anda menggunakan GIT, Anda dapat melakukan file SUO default dan kemudian menandainya sebagai tidak berubah menggunakan

git update-index --assume-unchanged YourSolution.suo

Ini juga berfungsi jika Anda ingin memiliki lebih dari satu proyek di grup awal default Anda. Satu-satunya kelemahan yang saya tahu adalah bahwa perintah ini harus dijalankan oleh semua orang yang tidak ingin melakukan file SUO.

sebetovsky
sumber