Bir .NET Çözümü için dizin yapısı


16

Son zamanlarda projelerin yapılandırılması metodolojimizi sorgulayan bir yüklenici ziyaretimiz oldu. Özellikle dizin yapısına atıfta bulunduğumu lütfen unutmayın. Microsoft yönergelerini kullanmanızı önerdi. Google "Microsoft yönergeleri .NET proje dizin yapısı" ve yararlı bir şey bulmak mümkün olacağını düşündüm, ancak bu durum böyle olmadığı kanıtlanmıştır. Durduğu gibi böyle bir şey yapıyoruz:

[Company.System.Feature]
  |-doc
     |Sandcastle project
  |-lib
     |Nuget packages
  |-src
    |-Project1 e.g. web
    |-Project2 e.g. business logic
    |-UnittestProject1
    |-Specs

Doc klasörü burada açıklanan gibi bir Sandcastle çözümü içerir: https://www.codeproject.com/Articles/15176/Sandcastle-Help-File-Builder (bkz: mutlak ve göreli yollar). Bu nedenle doc klasörü, oluşturulan yardım dosyasını içeren bir Yardım klasörü içerir. Lib klasörü tüm Nuget paketlerini içerir.

Bir çözümün nasıl yapılandırılacağını öneren Microsoft yönergeleri var mı? Buraya baktım: Diğer yerler arasında /programming/789389/project-sttruc-for-c-sharp-development-effort/789554?noredirect=1#comment86756309_789554 . Okuduğum makalelerin ve soruların çoğu 2007-2009 yılları arasında oluşturulmuş gibi görünüyor. Nuget'in 2010 yılında piyasaya sürüldüğüne inanıyorum. Microsoft yönergeleri var mı? Ağaç Cerrahı diye bir şey okudum, ancak bu artık mevcut görünmüyor: https://archive.codeplex.com/?p=treesurgeon .

TFS kullanıyorum; Cruise Control ve DDD herhangi bir fark yaratır.


4
Dizin yapıları bir zevk meselesidir. Proje / kuruluş niyetlerinizi en açık şekilde ifade eden klasör yapısını kullanın.
Robert Harvey

5
Ayrıca, bir dahaki sefere birisi bir şey hakkında "Microsoft Yönergeleri" ni izlemeniz gerektiğini söylediğinde, söz konusu kişiden bu yönergeleri sağlamasını isteyin veya size nerede bulabileceğinizi gösterin. Aksi takdirde, işe yaramaz tavsiye.
Robert Harvey

2
garip bit paketleri yerine lib içine nuget paketleri koyuyor
Ewan

1
@Ewan, nuget paketleri packagesdotnetcore ve VS2017 tarzı projeler için artık ait değil . Şimdi projelerin objdizinlerinde yaşıyorlar .
David Arno

2
pff! yükseltme?!?!? şeyleri kırabilecek gibi görünüyor
Ewan

Yanıtlar:


21

MSDN'de bazı çok eski resmi yönergeler var . Bunlar güncel değil. Sayfanın dediği gibi, " Bu içerik modası geçmiş ve artık korunmuyor. Hala bu teknolojileri kullanan kişiler için bir nezaket olarak sağlanmıştır. " Bu yüzden bu yönergelerden kaçınmanızı tavsiye ederim.

Proje İskelesi aracılığıyla ortak bir çözüm yapısı tanımlanmaya çalışıldı . Bu, C # yerine F # yönüne doğru yönlendirilir. Gerçi gerçekten işe yaramadı ve bu günlerde fikirlerin gelişiminde çok az işaret var.

En aktif ve güncel yönerge kümesi , ASP.NET ekibinde Microsoft'ta bir geliştirici olan David Fowler tarafından sağlanmaktadır. Bu yönergeler, Roslyn (C # ve VB.Net derleyicisi) ekipleri de dahil olmak üzere Microsoft'taki birçok kişi tarafından kullanılır. Bu yaklaşımı benimsemekten çok daha kötüsünü yapabilirsiniz.


İlk iki bağlantıyı gördüm, ancak üçüncü bağlantıyı görmedim. Üçüncü bağlantı için +1. Tüm Sandcastle projemi dokümanlar klasörüne mi yoksa sadece Sandcastle projesi tarafından oluşturulan Yardım dosyalarına mı koyabilirim? Bu cevabın neden reddedildiğinden emin değilim.
w0051977

1
Dürüst olmak gerekirse, Microsoft'un yeni dokümantasyon sistemine dahil edilmeyen her sayfaya "bu içerik eski ve artık korunmuyor" kelimeleri damgalanmıştır. Bu, orada bazı yararlı bilgilerin olmadığı anlamına gelmez.
Robert Harvey

Özellikleri koyardınız mı? Testler klasöründe veya Specs adlı bir dizinde (src klasörü ile aynı dizinde)? Bence çok da önemli değil.
w0051977

@RobertHarvey: Yeterince adil, ancak bu sayfaya sadece onu destekleyecek başka bir şey olmadan atıfta bulunmak, farklı bir tane zaten kurulmuşsa proje klasörü yapısını değiştirmek için bir neden değildir.
Flater

David Fowlers yönergelerini uygulamada GitHub'daki enity Framework gibi açık kaynak projelerinin çoğunda görebilirsiniz .
pfx
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.