SORU
22 EYLÜL 2010, ÇARŞAMBA


En iyi derleme sürüm numaraları korumak için uygulamalar/rehberlik

Bir için üç farklı derleme sürüm numaraları nasıl işaretçiler, öneri ve dikte bile arıyorum .NET montaj. Ürün sürümü bu normalde iş tarafından dikte olacak gibi görünüyor en basiti. Sonra, Dosya sürümü gerçek derleme sürüm nakliye zaman sadece kullanıldığı uygulamalar arasında sürüm gibi görünüyor.

Şu anda ben sadece basit bir anlamı etiketleme test ve bakım bültenleri bir derleme olan yok bağlıdır, bu yüzden bakıyorum otomatik artan yapı ve revizyon numaraları dosya sürümü ve son sürüm, kopyalama mevcut dosya sürümü derleme sürümü. Ürünün üretim kullanımı, ama hala geliştirme aşamasında - biliyorsun - o küçük bir şirket, bir değişiklik yok altyapı durumları kontrol edilir.

CEVAP
11 EKİM 2010, PAZARTESİ


Sürüm oluşturma konusunda çok tutkuluyum ve uzun bir süre sürüm kullanımı kolay bir sistem ile gelip için çabalıyorlar. Zaten senin söz söylediğin kadarıyla önemli bir nokta anlam açıktır, derleme sürüm numaraları ürün sürümü ile eş anlamlı değildir. Bir teknik olarak tahrik edilir, ve diğer iş ile tahrik edilir.

Aşağıdaki kaynak kontrol çeşit ve inşa bir sunucu kullandığınız varsayılmaktadır. İçerik TeamCity ve Subversion/GİT kullanıyoruz. Programdır projeleri (10) küçük bir sayı için ücretsiz ve çok iyi bir server kurmak ama tamamen ücretsiz ve başkaları vardır.

Sürüm numarası ne demek

Bir sürümü, bir kişi için ne anlama geldiğini bir diğerine farklı gelebilir, genel yapısı büyük, küçük, makro, mikro. Sürüm numarası bakışımı iki parçaya yıkmak için. İlk yarının ana sürümü (Ana) ve herhangi bir tuşa güncellemeleri (Küçük) açıklar. İkinci yarı kaynak kod sürümü neydi, ne zaman yapıldığı ve gösterir. Sürüm numaraları da farklı şeyler içeriğe bağlı olarak, API, Web Uygulaması, vb.

Major.Minor.Build.Revision

  • Revision Bu sayı, kaynak denetimi tanımlamak için alınmıştır aslında inşa edildi.
  • Build Bu bulmak için kullanılan giderek artan sayıda bir Özel yapım sunucusu üzerinde oluşturun. Çünkü bu önemli bir sayı. yapı sunucu aynı yapmış olabilir farklı kaynak iki kez parametreleri. Kullanarak dizi yapı birlikte kaynak sayısı ile kurdun ne olduğunu belirlemenizi sağlar ve nasıl.
  • Minor Bu sadece önemli bir değişiklik olduğunda değişiklik yapılabilir. halka arabirimi. Eğer bir şey olursa, API, alıcı kod hala olurdu mümkün derlemek için? Bu numara, Büyük numara değiştiğinde sıfırlamak olmalıdır.
  • Major ne sürümü gösterir ürün. Örneğin Tüm Visual Studio 2008 büyük derlemeler 9 ve 2010 Studio 10.

Bu kuralın istisnası

Her zaman kuralın istisnaları vardır ve bunların arasında gelip adapte olacak. Benim özgün bir yaklaşım subversion kullanarak dayanıyordu ama son zamanlarda GİT taşındı. Kaynak subversion gibi kontrol ve merkezi bir depo kullanan kaynak güvenli belirli bir zaman kaynakları belirli bir dizi tanımlamak için kullanılan bir dizi var. Bu GIT gibi dağıtılmış kaynağı denetimi için durum böyle değil. GİT kullanabileceğiniz otomatik artan bir sayı yok her geliştirme makine üzerinde dağıtılmış depoları kullandığı için check-in sayısını kullanır ama çirkin olan bir hack var. Bu yüzden benim yaklaşım gelişmeye vardı.

Major.Minor.Macro.Build

Sürüm numarası şimdi gitti, yapı revizyon olduğu için değişti ve Makro eklenmiştir. Siz nasıl uygun görürseniz ama ben yalnız bırakın en makroyu kullanabilirsiniz. Yapı içinde bulunabilir Programdır kullandığımız için iki aşamalı bir süreç var demek ama hiçbir şey kaybetmedik ve kabul edilebilir bir uzlaşmadır.

Ayarlamak için ne

Anlaşılması gereken ilk şey, Derleme Sürüm, Dosya Sürümü ve Ürün Sürümü ile uyumlu olmak zorunda kalmamasıdır. Sayıların farklı olması savunan değilim ama bağımlı derlemeleri yeniden zorunda olmadığı herhangi bir kamu arabirimleri etkilemez bir derleme küçük değişiklikler yaparken hayatını çok daha kolay hale getirir. Bu bu şekilde halletmem sadece Derleme Sürümü Majör ve Minör numaraları ayarlamak için ama Dosya Sürümü tüm değerleri ayarlamak için. Örneğin:

  • 1.2.0.0 (AssemblyVersion)
  • 1.2.3.4 (FileVersion)

Bu size yeteneğini dışarı rulo sıcak giderir bozulmaz varolan kodu çünkü derleme sürümleri eşleşmiyor ama izin ver seni görmek revizyon/inşa Meclisi bakarak dosyasının sürüm numarası. Bu ortak bir yaklaşım ve montaj detayları baktığınızda bazı açık kaynak derlemeler görülebilir.

Sen Ekip Lideri olarak hiç bir son dakika değişikliği gerekli olduğunda küçük sayısı artan sorumlu olması gerekir. Bir arabirim için gerekli bir değişiklik yayıyoruz ama önceki kod kırma bir çözümü, eski olarak geçerli bir işareti ve yeni bir arayüz oluşturuyor. Varolan kod yöntemi kullanılmıyor ve herhangi bir zamanda çıkartılabilir ama sen her şeyi hemen Ara gerektirmeyecek uyardı demektir. Sonra her şeyi geçirilmiş zaman eski yöntem kaldırabilirsiniz.

Nasıl birlikte Tel için

Tüm yukarıda manuel olarak yapabilirsin ama çok zaman alıcı, aşağıdaki süreci otomatikleştirme nasıl olurdu. Her adımda çalıştırılabilir.

  • Tüm proje Assemblyınfo AssemblyVersion AssemblyFileVersion öznitelikleri kaldırın.cs dosyaları.
  • Dosya (Versionınfo Ara.bilgi ortak bir meclis oluşturmak cs) ve ekleyin bir proje için bağlantılı madde.
  • AssemblyVersion AssemblyFileVersion değerleri ile sürümü özellikler ekleyerek "0.0.0.0".
  • Çözüm dosyası oluşturur MsBuild bir proje oluşturun.
  • Görev güncelleştirmeleri oluşturmak için önce Versionınfo ekleyin.cs. Sürüm numarası ayarlanabilen Assemblyınfo bir görev vardır kaynak MsBuild açık kütüphaneler vardır. Sadece rasgele bir sayı ve bir test olarak ayarlayın.
  • Tesiste bir grup oluşturmak numarası segmentlerin her biri için bir özellik içeren ekleyin. Bu büyük ve küçük belirlediğiniz yerdir. Yapı ve sürüm numarası argümanlar olarak kabul edilmelidir.

Subversion ile:

<PropertyGroup>
    <Version-Major>0</Version-Major>
    <Version-Minor>0</Version-Minor>
    <Version-Build Condition=" '$(build_number)' == '' ">0</Version-Build>
    <Version-Build Condition=" '$(build_number)' != '' ">$(build_number)</Version-Build>
    <Version-Revision Condition=" '$(revision_number)' == '' ">0</Version-Revision>
    <Version-Revision Condition=" '$(revision_number)' != '' ">$(revision_number)</Version-Revision>
</PropertyGroup>

Umarım ama bir çok yer var açık olmuştur. Herhangi bir soru sormak lütfen. Daha kısa bir blog yazısı bir araya getirmek için herhangi bir geri bildirim kullanacağım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • Chip Johnson

    Chip Johnson

    30 AĞUSTOS 2007
  • kruno j

    kruno j

    6 Mayıs 2007