.Net'te birden çok çakışan çözüm / proje nasıl yapılandırılır?


16

Geçenlerde , birden çok .net çözümünün bulunduğu eski bir kod tabanına sahip yeni bir müşteri için çalışmaya başladım , her biri genellikle bu çözüme özgü bazı projeleri barındırıyor, ancak daha sonra "mevcut projeleri ekle" ("mevcut projeyi ekle") teknik olarak diğer çözümlere aittir (en azından TFS'deki klasör yapısına giderseniz)

Bu iç içe bir kurulum görmedim, net bir inşa sırası, bazen çözüm bir proje var Sadece bir çözüm B'de barındırılan bir projenin çıktı dizininden doğrudan bir referans dlls, bazen proje bile olsa bile doğrudan dahil edilmiştir Uzak klasör yapısında FAR.

Görünüşe göre her şey geliştirici tembellikleri için optimize edilmiş.

Neden bir CI sunucusu yoktu onları karşı karşıya zaman onlar gibi organize kod ile kurmak zor olduğunu yanıtladı. (Ben şimdi kurmak ve bu kod organizasyon lanet)

Çözümler, akıllıca bir karar olduğunu düşünüyorum , ancak bu çözümlerin (projelerin) her yerde olduğunu düşünüyorum , dağıtım eserler (birlikte dağıtılması gereken şeyler aynı çözümde) etrafında düzenlenmiştir .

Birden fazla çözüm / dağıtım yapay nesnesi arasında ortak sınıf kitaplıklarını yeniden kullanırken kullanılacak en iyi uygulama konusunda fikir birliği var mı,

  • VCS'de kod nasıl yapılandırılır
  • İş mantığının ayrı dağıtım yapıları arasında paylaşılması nasıl kolaylaştırılır

Yanıtlar:


9

Daha önce başka çözümlere ait mevcut projeleri de dahil etmek istemedim. 1 çözüm için bu projede düzenleme yapmanın başka bir çözümde bir şeyi tamamen bozduğu çok fazla değişken var. Daha sonra bu sorunu çözerek orijinal çözümü kırmış olursunuz. Köpürtün, durulayın, tekrarlayın.

Bu tür bir bağımlılık birden çok çözüme sızdığında, bağımlı kodu OWN çözümüne ayırmak ve daha sonra referans olarak dahil edilen bir kara kutu kütüphanesi oluşturmak istiyorum. Benim düşüncem, çözümlerinizin iç içe geçmiş olması, böylece hata ayıklamanın her çözüm için paylaşılan projeye kadar tamamlanmasıdır. Kütüphane düzgün bir şekilde oluşturulmuş ve test edilmişse, bu tür hata ayıklama gerçekten gerekli değildir. Kütüphane kendi yararları üzerinde durabilmeli ve herhangi bir tüketici projesinin beklentilerinin tutarlı bir şekilde karşılanabilmesi için kapsamlı bir şekilde test edilmelidir.


3
Buna ek olarak, yeniden düzenleme sen eğer öyleyse, o kadar kolay bugünlerde olduğu do his değişikliği kütüphanesinde kendisinde olmak önemlidir yeterlidir mahmuz-of-the-an bazı, bu uygulamanın uygulama projesi yapabileceği şimdi ve kütüphaneye birleştirme sonradan , mevcut görevinizden daha az dikkatiniz dağıldığında ve uygun testleri yapmak için zamanınız olduğunda.
Aaronaught

@Aaronaught: Buna +1.
Joel Etherton

5

Aslında bahsettiğiniz gibi TFS yapılarını organize ettim ve CI için benzersiz zorluklar sunarken bir dizi farklı faydası var. Açık olan bir tanesi, ayrı .NET projelerinde doğru bileşenleştirmeyi desteklemesi ve teşvik etmesi ve böylece% 100 test kapsamını teşvik ederek iyi TDD'yi desteklemesidir. Hemen yarasadan çözebileceğiniz birkaç problem fark ettim.

bazen çözüm A'da bir proje Çözüm B'de barındırılan bir projenin çıktı dizininden doğrudan bir referans dlls, bazen proje FAR uzakta klasör yapısında olsa bile doğrudan dahil edilmiştir.

Diğer dizinlerin çıktılarına ikili referanslar iyi bir yaklaşım değildir ve proje referansları ile birlikte kullanıldığında da kötü bir yaklaşım haline gelir. En azından tutarlılık için proje referanslarına ikili referanslarınızı tercihen değiştirerek birini veya diğerini yapmaya çalışın. Bu noktada, her Çözüm tek bir kurulabilir uygulama veya uygulama katmanını temsil edebilir (Örn. SuperApp.sln, OtherAppServices.sln, OtherAppPresentationTier.sln).

TÜM projeleri inşa etmek için de bir Ana Çözüm oluşturmanızı öneririm. Ana Çözüm, her şeye proje referanslarına sahip olacak ve esasen uygulama paketindeki tüm projeleri işleyen tek bir derleme komutuna sahip olmak için var olacaktır. Geliştiriciler Ana Çözümü aktif geliştirme veya hata ayıklama için kullanmamalıdır. Bu yapı yapılarının montajını çok daha kolay hale getirir.

Dağıtım daha sonra basit bir toplu iş, powershell veya Perl betiği ile yapılabilir. Bu, temel olarak uygun çözümü veya Ana çözümü oluşturacak ve daha sonra her şeyi uygun ortamlara dağıtacaktır. Bu, doğru yapılması durumunda herhangi bir CI sunucusuna kolayca entegre edilebilir.

• İş mantığının ayrı dağıtım yapıları arasında paylaşılması nasıl kolaylaştırılır?

Ortak iş mantığı için bir proje oluşturun veya daha küresel veya evrensel iş mantığı için daha iyi endişelerin ayrılması. Buna referans vermek isteyen tüm konuşlandırılabilir çözümler bunu bir proje referansı ile yapmalıdır.

Kodunuzu TFS'de düzenlerken, ortak veya paylaşılan projeleri dizin ağacında daha yüksek bir seviyede tutarak bunu başarmak daha kolay hale gelir.

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.