Oldukça geniş bir .NET uygulamaları portföyü ile ilgileniyorum. Ayrıca portföyde diğer platformların üzerine inşa edilmiş eski uygulamalar vardır - yerel C ++, ECLIPS Formları, vb.
Şu anda tüm bu uygulamalar için yapıları yöneten NAnt üstünde karmaşık bir yapı çerçeve var. Yapı çerçevesi NAnt'yi bir dizi farklı şey yapmak için kullanır:
- Subversion'dan kodu çekin ve Subversion'da etiketler oluşturun
- .NET için MSBuild veya diğer platformlar için diğer derleyiciler kullanarak kodu oluşturun
- Sürüm numaralarını artırmak için AssemblyInfo dosyalarının içine göz atın
- Derlemelere / sürümlere dahil edilmemesi gereken belirli dosyaların silinmesi
- Dağıtım klasörlerine kod yayınlar
- Fermuarlar yedekleme amacıyla kodlanır
- Windows hizmetlerini dağıtın; başla ve durdur
- Vb.
Bunların çoğu sadece NAnt ile kendi başına yapılabilir, ancak NAnt'ın çevremize özgü bazı şeyleri yapması için birkaç uzantı görevi yaptık. Ayrıca, yukarıdaki bu işlemlerin çoğu, farklı uygulama derleme komut dosyalarımızın çoğunda genelleştirilir ve yeniden kullanılır, böylece mantığı tekrarlamayız. Bu yüzden basit NAnt kodu ve basit yapı komut dosyaları değildir. Bir derlemeyi yürütmek için bir araya gelen düzinelerce NAnt dosyası vardır.
Son zamanlarda NAnt'den birkaç nedenden dolayı memnun kalmadım: (1) sözdizimi sadece korkunç - XML'nin üstündeki programlama dillerinin bakımı gerçekten korkunç, (2) proje asmada öldü; son zamanlarda bir ton güncelleme olmadı ve hiç kimse gerçekten dümende değil gibi görünüyor. .NET 4 ile çalışmayı denemek, bu etkinlik eksikliği nedeniyle bazı acı noktalarına neden oldu.
Yani, tüm bu arka plan ortadan kalktığında, işte sorum. Yukarıdaki listeye dayanarak gerçekleştirmek istediğim bazı şeyler göz önüne alındığında ve öncelikle bir .NET mağazasında olduğum göz önüne alındığında, aynı zamanda .NET dışı projeler de inşa etmem gerekiyor, dikkate almam gereken NAnt'a bir alternatif var mı geçiş?
Radarımdaki şeyler arasında Powershell ( psake ile veya psake olmadan ), MSBuild tek başına ve tırmık var . Bunların hepsinin artıları ve eksileri var. Örneğin, MSBuild yeterince güçlü mü? Yıllar önce kullandığımı hatırlıyorum ve NAnt kadar güçlü değildi. Ekibimin Ruby'i sadece tırmık kullanarak yapı yapmak için öğrenmesini gerçekten istiyor muyum? Psake, portföyümü sabitlemek için bir projeye gerçekten olgun mu? Powershell "metale çok yakın" ve ben kendi başına kullanmak için benzer psake benzer kendi yapı kitaplığı yazmak zorunda kalacağım?
Dikkate almam gereken başka araçlar var mı? Eğer önemli derecede karmaşık bir .NET portföyü ile ilgileniyorsanız, hangi derleme aracına bakardınız? Ekibiniz şu anda ne kullanıyor?