Visual Studio .suo ve .user dosyalarını kaynak denetimine eklemeli miyim?


841

Visual Studio çözümleri iki tür gizli kullanıcı dosyası içerir. Bunlardan biri .suoikili dosya olan çözüm dosyasıdır. Diğeri, .usermetin dosyası olan proje dosyasıdır. Bu dosyalar tam olarak hangi verileri içeriyor?

Ayrıca bu dosyaları kaynak denetimine eklemem gerekip gerekmediğini merak ediyorum (benim durumumda Subversion). Bu dosyaları eklemezsem ve başka bir geliştirici çözümü denetlerse, Visual Studio otomatik olarak yeni kullanıcı dosyaları oluşturur mu?


9
.suo dosyaları otomatik olarak yeniden oluşturulur. İşler bozulursa ayarları varsayılan olarak 'yenilemenin' harika bir yolu.
CodingBarfield

3
Subversion ve Visual Studio projeleri için en iyi uygulamalar, bu konu hakkında daha genel bir sorudur. Ayrıca kabul edilen cevabı, VS çözümlerinin / projelerinin hangi dosyalarının / dizinlerinin kaynak kontrol sistemlerine ekleneceğini ve hangi parçaların göz ardı edilmesi gerektiğini ayrıntılı olarak açıklayan resmi MSDN belgelerine bir bağlantı içerir.
Attila Csipak

3
* .suo için lütfen buraya bakın
smwikipedia

Yanıtlar:


673

Bu dosyalar genel olarak makinenize özgü kullanıcı tercihi yapılandırmaları içerir, bu nedenle SCM'ye yerleştirmemek daha iyidir. Ayrıca, VS neredeyse her yürüttüğünüzde değiştirecektir, bu nedenle her zaman SCM tarafından 'değiştirildi' olarak işaretlenecektir. Ben de eklemiyorum, VS'yi 2 yıldır kullanan bir projedeyim ve bunu yaparken hiç problem yaşamadım. Tek küçük sıkıntı, hata ayıklama parametrelerinin (yürütme yolu, dağıtım hedefi vb.) Bu dosyalardan birinde depolandığını (hangisini bilmediğini), bu nedenle onlar için bir standardınız varsa ' diğer geliştiricilerin tüm geliştirme ortamını 'kullanıma hazır hale getirmesi' için SCM aracılığıyla yayınlayın.


22
Dikkatli olun, suo dosyası, projenin çözüm içinde yüklenip yüklenmediği bilgisini saklar.
Kugel

5
Ben hata (.en azından SQL Server veri araçları için) .user dosyasında depolar inanıyorum. Ayrıca, Hata Ayıkla sekmesindeki ayarları değiştirdiğinizde, her zaman hemen .user için kalıcı değildir (çözümü kapatmak işe yarıyor, can sıkıcı ... veya .sqlproj dosyasında saklanan başka bir ayarı değiştirmek gibi görünüyor).
jamiebarrow

87
.User ve .csproj dosyalarını herhangi bir metin düzenleyicisinde açabilirsiniz. İlgili hata ayıklama ayarlarını .user'dan .csproj'a kopyalayıp yapıştırdıktan sonra .user dosyasını sildim. Hata ayıklama, .csproj dosyasındaki yeni konumlarından doğru ayarları okuyarak çalışmaya devam etti. Bu, .user dosyasını taahhüt etmeden hata ayıklama ayarlarını yürütmenin bir yolunu sağlamalıdır. Bunları doğru yapılandırmaya yerleştirdiğinizden emin olun (hata ayıklama, serbest bırakma vb.). Makinemde çalışıyor! =)
Chris Nielsen

139

Bunları eklemenize gerek yoktur; kullanıcı başına ayarlar içerir ve diğer geliştiriciler kopyanızı istemez.


19
Birkaç farklı makinede kendi başınıza çalışıyorsanız, onları eklemeye değer mi?
thepocketwade

33
Yapmazdım, çünkü beklenmedik sistem farklılıklarına kırılgan olabilir; örneğin, işyerinde x64 ve evde x86 üzerinde çalışırsanız, "c: \ program files (x86)" ve "c: \ program files" öğelerini boğabilir. Bilmiyorum, ama riske atmam.
Steve Cooper

2
Rağmen onlar kullanıcıya özel bilgi içerir, ancak yeni (proje dahil) seçeneği ile eklenen dosyaların bilgileri de .csproj dosyasında olduğunu düşünüyorum, bu da diğer kullanıcıların yeni eklenen tüm proje kaynaklarını elle eklemenizi gerektirir. Bir çözüm bilen biri varsa, lütfen burada belirtin.
zeppelin

69

Diğerleri, *.suove *.userdosyalarının kaynak kontrolü altında olmasının neden iyi bir fikir olmadığını açıkladı .

Bu modelleri svn:ignore2 nedenden dolayı mülke eklemenizi öneririm :

  1. Böylece diğer geliştiriciler bir geliştiricinin ayarlarıyla çalışmayacak.
  2. Dolayısıyla, durumu görüntülediğinizde veya dosyaları işlediğinizde, bu dosyalar kod tabanını karıştırmaz ve eklemeniz gereken yeni dosyaları gizlemez.

svn:ignoreMülk nerede ve nasıl ayarlanır?
Peter Mortensen

@PeterMortensen, bu soruya bakın: stackoverflow.com/questions/86049/…
JXG

Ama eklemek için bir dava var ( bu cevaba bakınız ) .user, o zaman kişi sadece görmezden gelmeyi seçemez .suo- ya da görmezden gelebilir .user, böylece onları eklemek bilinçli bir karar alır mı? Böyle düşünmeyin svn:ignore, amaç bilinçli bir karara ihtiyaç duyulmayan şeyleri işaretlemektir.
PJTraill

49

İkili dosyayı (* .suo) taahhüt etmiyoruz, ancak .user dosyasını taahhüt ediyoruz. .User dosyası, örneğin projede hata ayıklamaya yönelik başlatma seçeneklerini içerir. Başlangıç ​​seçeneklerini projenin özelliklerinde "Hata Ayıkla" sekmesinde bulabilirsiniz. NUnit'i bazı projelerde kullandık ve nunit-gui.exe'yi proje için başlangıç ​​seçeneği olarak yapılandırdık. .User dosyası olmadan, her ekip üyesinin dosyayı ayrı ayrı yapılandırması gerekir.

Bu yardımcı olur umarım.


4
Ben de böyle olması gerektiğini düşünmeye başlıyorum - böylece bir takım geliştiriciler aynı hata ayıklama ayarlarını kullanmak kullanıcı dosyasını taahhüt. Kendi makinelerinde değiştirirlerse, standart yol kaynak kontrolündeki versiyon olduğu sürece hala iyi.
jamiebarrow

1
Diğerleri bunu yapmayı önerdi, ancak tehlikelerin ne olabileceğinden emin değilim. Belki daha az hassas ayarlara sahip repo dosyası, kullanıcının (daha iyi) yerel kopyasını uçurabilir mi? (Ekibimiz Mercurial, BTW kullanıyor.)
Jon Coombs

2
Microsoft , .user dosyasını kaynak denetimine eklememenizi önerir .
DavidRR

1
Hata ayıklama ayarlarını .csproj dosyasına taşıyabilirsiniz, bu yoruma
Timbo

26

Bu soruyu / cevabı 2011'de Google üzerinden bulduğumdan beri, bir saniye alıp Visual Studio 2010 tarafından oluşturulan * .SDF dosyalarının bağlantısını muhtemelen sürüm kontrolüne eklenmemesi gereken dosyalar listesine ekleyeceğimi düşündüm. IDE bunları yeniden oluşturur). Bir * .sdf dosyasının başka bir yerde meşru bir kullanıma sahip olabileceğinden emin olmadığım için, yalnızca belirli [projectname] .sdf dosyasını SVN'den yoksaydım.

Visual Studio dönüştürme sihirbazı 2010 neden büyük bir SDF veritabanı dosyası oluşturuyor?


2
SDF dosyası muhtemelen bir SQL Server Compact Edition veritabanıdır .
Carl G

23

Hayır, söylediğin gibi kullanıcıya özgü oldukları için kaynak denetimine eklememelisin.

SUO (Çözüm Kullanıcı Seçenekleri): Çözümünüzü her açışınızda, yaptığınız özelleştirmeleri içerecek şekilde çözümünüzle ilişkilendirebileceğiniz tüm seçenekleri kaydeder.

.User dosyası, proje için kullanıcı seçeneklerini içerir (SUO çözüm için kullanılırken) ve proje dosyası adını genişletir (örn. Everything.csproj.user, thing.csproj projesi için kullanıcı ayarlarını içerir).


20

Bu, Microsoft'un konuyla ilgili görüşü gibi görünüyor:

Kaynak denetimine .suo dosyaları ekleme (ve düzenleme)

Projenizin neden DebuggingWorkingDirectory dosyasını suo dosyasında sakladığını bilmiyorum. Bu kullanıcıya özel bir ayarsa, ayarı * .proj.user dosya adında saklamayı düşünmelisiniz. Bu ayar proje üzerinde çalışan tüm kullanıcılar arasında paylaşılabilir durumdaysa, proje dosyasında saklamayı düşünmelisiniz.

Suo dosyasını kaynak kontrolüne eklemeyi bile düşünmeyin! SUO (çözücü kullanıcı seçenekleri) dosyasının kullanıcıya özel ayarları içermesi amaçlanmıştır ve aynı çözüm üzerinde çalışan kullanıcılar arasında paylaşılmamalıdır. Eğer scc veritabanına suo dosyası ekliyorsanız, IDE'de hangi şeyleri kıracağınızı bilmiyorum, ancak kaynak kontrol açısından web projeleri scc entegrasyonunu kıracaksınız, Lan vs İnternet eklentisi kullanılmış VSS erişimi için farklı kullanıcılar tarafından ve hatta scc'nin tamamen bozulmasına neden olabilirsiniz (suo dosyasında saklanan ve sizin için geçerli olabilecek VSS veritabanı yolu başka bir kullanıcı için geçerli olmayabilir).

Alin Constantin (MSFT)


Ayrıca, MSDN'den: Solution User Options (.Suo) File . İlk cümle Microsoft'un niyetini oldukça netleştirir: "Çözüm kullanıcı seçenekleri (.suo) dosyası kullanıcı başına çözüm seçenekleri içerir. Bu dosya kaynak kodu kontrolüne teslim edilmemelidir."
DavidRR

19

Varsayılan olarak Microsoft Visual SourceSafe, kullanıcıya özgü ayar dosyaları oldukları için bu dosyaları kaynak denetimine dahil etmez. Kaynak kontrolü olarak SVN kullanıyorsanız bu modeli takip ederim.


12

Visual Studio bunları otomatik olarak oluşturur. Onları kaynak kontrolüne almanızı önermiyorum. Yerel bir geliştiricinin SOU dosyasının VS'nin geliştiriciler kutusunda düzensiz davranmasına neden olduğu birçok kez olmuştur. Dosyayı silmek ve VS'nin yeniden oluşturmasına izin vermek her zaman sorunları düzeltti.


Geri kalan .sou dosyası vardı ve paketleri yeniden yükleme sorunu veriyordu. .Sou dosyasını silmek sorunu çözdü. Teşekkür ederim.
mercedes

11

On MSDN Web sitesinde , açıkça belirtmektedir

Çözüm kullanıcı seçenekleri (.suo) dosyası kullanıcı başına çözüm seçenekleri içerir. Bu dosya kaynak kodu kontrolüne teslim edilmemelidir .

Bu yüzden, kaynak denetiminize girerken bu dosyaları görmezden gelmenin oldukça güvenli olduğunu söyleyebilirim.


9

Yapmazdım. "Kullanıcı" başına değişebilecek herhangi bir şey genellikle kaynak kontrolünde iyi değildir. .suo, .user, obj / bin dizinleri


8

Bu dosyalar, çözümün kendisinden bağımsız olması gereken kullanıcıya özgü seçeneklerdir. Visual Studio gerektiğinde yenilerini oluşturacaktır, bu nedenle kaynak denetimi için teslim edilmelerine gerek yoktur. Gerçekten de, bireysel geliştiricilerin çevrelerini uygun gördükleri şekilde özelleştirmelerine izin verdiği için muhtemelen daha iyi olmayacaktır.


7

.User dosyalarını kaynak kontrol edemezsiniz, çünkü bu kullanıcıya özgüdür. Uzak makinenin adını ve kullanıcıya bağlı diğer şeyleri içerir. Vcproj ile ilgili bir dosyadır.

.Suo dosyası sln ile ilişkili bir dosyadır ve "çözüm kullanıcı seçenekleri" (başlangıç ​​projeleri (ler), windows pozisyonu (yerleştirilmiş ve nerede, ne yüzen), vb. İçerir.

Bu bir ikili dosyadır ve "kullanıcı ile ilgili" bir şey içerip içermediğini bilmiyorum.

Şirketimizde bu dosyaları kaynak kontrolü altına almıyoruz.


7

Genellikle tek bir geliştiriciye atanan proje ile ilgili belirli ayarları içerirler (örneğin, uygulamanızda hata ayıkladığınızda başlatılacak başlangıç ​​projesi ve başlangıç ​​sayfası gibi).

Bu yüzden onları sürüm kontrolüne eklememek daha iyidir, VS'yi her bir geliştiricinin istedikleri belirli ayarlara sahip olabilmesi için onları yeniden oluşturur.


5

.user kullanıcı ayarları ve sanırım .suo çözüm kullanıcı seçenekleri. Bu dosyaların kaynak kontrolü altında olmasını istemezsiniz; her kullanıcı için yeniden oluşturulacak.



4

Rational ClearCase kullanarak cevap hayır. Kaynak kodu kontrolüne yalnızca .sln &. * Projesi kaydedilmelidir.

Diğer satıcılara cevap veremiyorum. Doğru hatırlıyorsam, bu dosyalar "kullanıcıya" özel seçenekler, ortamınızdır.


only the .sln & .*proj should be registered- burada çok fazla dosya unuttunuz mu?
Kurt

@Wolf yanında bariz
Polluks

3

Bu dosyalardan hiçbirini sürüm denetimine eklemeyin. Bu dosyalar, diğer iş istasyonlarında soruna neden olacak sürüm kontrolüne iade edildiğinde iş istasyonuna özgü bilgilerle otomatik olarak oluşturulur.


2

Hayır, geliştiriciye / makineye özgü yerel ayarlar oldukları için kaynak kontrolüne bağlı kalmamalıdır.

GitHub, Visual Studio kullanıcılarının göz ardı etmeleri için önerilen dosya türlerinin bir listesini tutar: https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

Svn için, aşağıdaki global-ignoreözellik kümesi var:

* .DotSettings.User
* .onetoc2
* .suo
.vs
PrecompiledWeb
Thumbs.db
obj
bin
ayıklama
* .user
* .vshost. *
* .Tss
* .dbml.layout


1

Yürütülebilir yön bağımlılıklarınızı ProjectProperties> Hata ayıklama> Ortam'da ayarlarsanız, yollar '.user' dosyalarında saklanır.

Bu dizeyi yukarıda belirtilen alanda ayarladığımı varsayalım: "PATH = C: \ xyz \ bin" '.user' dosyasında şu şekilde depolanacak:

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

Bu, OpenCV'de çalışırken bize çok yardımcı oldu. Farklı projeler için OpenCV'nin farklı sürümlerini kullanabiliriz. Diğer bir avantajı, projelerimizi yeni bir makineye kurmak çok kolaydı. Sadece ilgili bağımlılık dizinlerini kopyalamak zorunda kaldık. Bazı projeler için kaynak kontrolüne '.user' eklemeyi tercih ediyorum.

Yine de, tamamen projelere bağımlı. İhtiyaçlarınıza göre arama yapabilirsiniz.


Sembolik bağlantılar da bu amaç için çok iyi çalışır.
sɐunıɔ ןɐ qɐp

1

As diğer cevaplar açıklandığı hem .suove .useronlar (BTW kullanıcı / makineye özel olduğundan, kaynak kontrolüne eklenmemelidir .suoVS en yeni sürümleri için adanmış geçici dizine taşındı .vstamamen kaynak kontrolden çıkarak tutulmalıdır).

Ancak uygulamanız VS'de hata ayıklamak için bazı ortam kurulumları gerektiriyorsa (bu tür ayarlar genellikle .userdosyada tutulur ), örnek bir dosya hazırlamak (adlandırma gibi .user.SAMPLE) ve referanslar için kaynak kontrolüne eklemek kullanışlı olabilir .

Bu tür bir dosyadaki sabit kodlu mutlak yol yerine, göreli olanları kullanmak veya ortam değişkenlerine güvenmek mantıklıdır, bu nedenle örnek, başkaları tarafından kolayca yeniden kullanılabilecek kadar genel olabilir.

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.