Bir .sln kaynak denetimine bağlı olmalı mı?


100

Bir .sln dosyasını kaynak denetimine işlemek en iyi yöntem midir? Bunu yapmak ne zaman uygun veya uygunsuz olur?

Güncelleme Cevaplarda yapılan birkaç iyi nokta vardı. Cevaplar için teşekkürler!


21
Sanırım bu, taahhüt etmek istemediğiniz .SUO dosyası.
apandit

Sadece kayıt için, Görev listelerinin (eğer kullanıyorsanız) .SUO dosyasında saklandığına inanıyorum ... Dolayısıyla, onları kaynak kontrolüne dahil etmek istemeseniz de, onları 'sadece silmek' istemeyebilirsiniz. yabancı çarpıklık.
Benjol

Yanıtlar:


68

Diğer cevaplardan, çözüm dosyalarının yararlı olduğu ve resmi derlemeler için kullanılmasalar bile işlenmesi gerektiğinin açık olduğunu düşünüyorum. Tanıma Git / Beyan gibi Visual Studio özelliklerini kullanan herkes için kullanışlıdırlar.

Varsayılan olarak, mutlak yollar veya makineye özgü başka yapılar içermezler. (Ne yazık ki, AMD CodeAnalyst gibi bazı eklenti araçları bu özelliği düzgün bir şekilde korumaz.) Proje dosyalarınızda (hem C ++ hem de C #) göreli yolları kullanmaya dikkat ederseniz, bunlar makineden bağımsız olacaktır. çok.

Muhtemelen daha yararlı soru şudur: Hangi dosyaları dışlamalısınız? VS 2008 projelerim için .gitignore dosyamın içeriği:

*.suo
*.user
*.ncb
Debug/
Release/
CodeAnalyst/

(Son giriş yalnızca AMD CodeAnalyst profil oluşturucu içindir.)

VS 2010 için aşağıdakileri de hariç tutmalısınız:

ipch/
*.sdf
*.opensdf

2
Birim test sonuçları için de bir göz ardı kuralım var. Bazı insanlar onları kontrol edebilir ama ben dağınıklığı sevmiyorum
Matthew Whited

9
+1 - Ben şahsen inşa edilecek hiçbir şeyi işlemem, bu nedenle bin / ve obj /
Steven Evers

Yalnızca 1'den fazla proje içeren .sln dosyalarını işliyorum
Justin

2
işte benim yıkımım Global görmezden gelen pıtırtı: * / obj obj TestResults *. [Uu] ser * Thumbs.db * Web.Publish.xml * WebApplication.Publish içinde [Bb] içinde * .vsmdi * .suo * / [Bb]. xml * Web.log
Merritt

Burada , geçici dosyaları, derleme sonuçlarını ve popüler Visual Studio eklentileri tarafından oluşturulan dosyaları içeren, yaygın olarak paylaşılan bir .gitignore dosyası bulunmaktadır.
Lauren Van Sloun

58

Evet - bence her zaman uygun. Kullanıcıya özel ayarlar diğer dosyalarda bulunur.


3
Kesinlikle .sln .prj dosyalarına (projeler) referanslar içeriyor
dplante

20

Evet bunu yapmalısın. Bir çözüm dosyası yalnızca çözümünüzün genel yapısı hakkında bilgi içerir. Bilgi, çözüm için geneldir ve muhtemelen projenizdeki tüm geliştiriciler için ortaktır.

Kullanıcıya özel herhangi bir ayar içermez.


13

Kesinlikle almalısın. Başkalarının bahsettiği nedenlerin yanı sıra, tüm projelerin bir adımda inşa edilmesini mümkün kılmak gerekiyor.


8

Genel olarak çözüm dosyalarının kontrol edilmesi gerektiğini kabul ediyorum, ancak çalıştığım şirkette farklı bir şey yaptık. Oldukça büyük bir havuzumuz var ve geliştiriciler zaman zaman sistemin farklı bölümlerinde çalışıyor. Çalışma şeklimizi desteklemek için ya bir büyük çözüm dosyamız ya da daha küçük birkaç dosyamız olacaktı. Bunların her ikisinin de birkaç eksikliği vardır ve geliştiriciler kısmında manuel çalışma gerektirir. Bunu önlemek için, tüm bunları yöneten bir eklenti yaptık.

Eklenti, her geliştiricinin sadece ilgili projeleri havuzdan seçerek üzerinde çalışmak için kaynak ağacının bir alt kümesini kontrol etmesini sağlar. Eklenti daha sonra bir çözüm dosyası oluşturur ve verilen çözüm için proje dosyalarını anında değiştirir. Aynı zamanda referansları da işler. Başka bir deyişle, geliştiricinin yapması gereken tek şey uygun projeleri seçmek ve ardından gerekli dosyalar oluşturulur / değiştirilir. Bu ayrıca şirket standartlarını sağlamak için çeşitli diğer ayarları özelleştirmemize olanak tanır.

Ek olarak, eklentiyi, genellikle kullanıcıların arşive hatalı / uyumlu olmayan kod göndermesini engelleyen çeşitli giriş politikalarını desteklemek için kullanıyoruz.


Görünüşe göre bu, uzun süredir cevaplanmamış sorularımdan birinin cevabı olabilir ( stackoverflow.com/questions/1490728/… ), bu eklentinin bir kopyasını alma şansı var mı?
Benjol

@Benjol: Üzgünüm, bu dahili bir araç. Yukarıdaki özelliklere ek olarak, bir dizi başka dahili sistemle de entegre olur, bu nedenle işleri nasıl yürüttüğümüze çok özeldir. İşlerin sadece çözüm / proje kısmına ihtiyacınız varsa, uygulamak o kadar da zor değil.
Brian Rasmussen

Tamam, tek bir şey var, 'büyük çözümünüzde' proje referanslarınız veya dosya referanslarınız var mı? Ve bir geliştirici bir dosyaya / projeye yeni bir referans eklerse, eklenti iade etmeden önce uygun dönüşümü geri yapar mı? Ve geliştiricinin satın almayı seçmediği bağımlılıkları nasıl ele alacaksınız?
Benjol

8

Evet, taahhüt etmeniz gereken şeyler:

  • çözüm (* .sln),
  • proje dosyaları,
  • tüm kaynak dosyalar,
  • uygulama yapılandırma dosyaları
  • komut dosyaları oluşturmak

Taahhüt etmemeniz gereken şeyler :

  • çözüm kullanıcı seçenekleri (.suo) dosyaları,
  • oluşturulan dosyaları oluşturun (ör. bir derleme komut dosyası kullanarak) [Düzenle:] - yalnızca gerekli tüm oluşturma komut dosyaları ve araçlar sürüm kontrolü altında mevcutsa (derlemelerin cvs geçmişinde orijinal olmasını sağlamak için)

Otomatik olarak oluşturulan diğer dosyalarla ilgili olarak, ayrı bir iş parçacığı vardır .


1
"Otomatik olarak oluşturulan herhangi bir dosyaya" katılmıyorum.
Mehrdad Afshari

@Mehrdad Intelisense dosyalarının da işlenmesi gerektiğini düşünüyor musunuz?
Edison Gustavo Muenz

1
@Edison: Hayır. Örneğin LINQ gibi otomatik olarak oluşturulan kaynak dosyalardan SQL veri bağlamına atıfta bulunuyorum.
Mehrdad Afshari

2
Formname.Designer.cs dosyaları otomatik olarak oluşturulmuş sayılmaz mı?
jasonh

1
Demek istediğim, derleme sırasında oluşturulan dosyalardı. Bunu sık sık buluyorum - birisi otomatik olarak oluşturulan bir dosyayı işliyor ve sonra SVN sırf bazı yorumların değişmesi nedeniyle bir değişiklik bildirdi.
Groo

5

Evet, kaynak kontrolünün bir parçası olmalıdır. Uygulamanıza proje eklediğinizde / çıkardığınızda, .sln güncellenir ve kaynak kontrolü altında olması iyi olur. Uygulama kodu 2 sürümlerinizi geri çekmenize ve doğrudan bir derleme yapmanıza izin verir (gerekirse).


4

Evet, her zaman .sln dosyasını dahil etmek istersiniz, çözümdeki tüm projelerin bağlantılarını içerir.


4

Çoğu durumda, .sln dosyalarını kaynak denetimine işlemek iyi bir fikirdir.

.Sln dosyalarınız başka bir araç (CMake gibi) tarafından oluşturulmuşsa, bunları kaynak denetimine koymak muhtemelen uygun değildir.


2

Her şeyi senkronize ettiği için yapıyoruz. Gerekli tüm projeler bir arada bulunur ve kimsenin eksikliğini düşünmesine gerek yoktur. Derleme sunucumuz (Ant Hill Pro) ayrıca bir sürüm için hangi projelerin inşa edileceğini belirlemek için sln kullanır.


2

Genellikle tüm çözüm dosyalarımızı bir çözüm dizinine koyarız. Bu şekilde çözümü koddan biraz ayırıyoruz ve üzerinde çalışmam gereken projeyi seçmek daha kolay.


1

Kaynak kontrolünde saklamamayı bile düşündüğünüz tek durum, kaynak kontrolünde olan birçok projeyle büyük bir çözüme sahip olmanız ve bazıları için ana çözümden bazı projelerle küçük bir çözüm oluşturmak istemenizdir. özel geçici gereklilik.


1

Evet - Ürününüzü oluşturmak için kullandığınız her şey kaynak kontrolünde olmalıdır.


1

Çözüm dosyalarını TFS Sürüm Kontrolünde tutuyoruz. Ancak ya da ana çözüm gerçekten büyük olduğundan, çoğu geliştiricinin yalnızca ihtiyaç duyduklarını içeren kişisel bir çözümü vardır. Ana çözüm dosyası çoğunlukla yapı sunucusu tarafından kullanılır.


0

.slns biz tek şey değil TFS ile ilgili sorunlar vardı!


1
Bu komik ... SLN'ler şimdiye kadar düzeltmem gereken tek dosyaydı ... ama sorunların nedeni geliştiricilerin birleştirmelere dikkat etmemesi.
Matthew Whited
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.