2011-07-11 13 views
5

Gruplar için sürüm ve Telif Hakkı değişikliklerini koordine etmek için hangi yaklaşımları kullandınız?Birçok C# projesinin ağacımda derleme sürümü bilgilerini nasıl koordine edebilirim?

Her birinin kendi AssemblyInfo dosyasına sahip birçok csprojs ağacım var. Yapım sürecimin bir parçası olarak, telif hakkı yılını ve sürümünü ayarlamak istiyorum.

  • tarihe (bir makro, kamu ile tekil sınıfı ile kaynak dahil

    • komut dizisi ile tüm dosyaları değiştirin: aşağıdaki seçenekler kullanılabilir olması ancak dosya modifikasyonu sadece ben şimdiye kadar gördüğüm biri gibi görünüyor [assembly: AssemblyFileVersion("${ENV.VERSION")])

    statik değişkenler) komut satırında (-DAssemblyVersion = "1.0.0.1" konulu

  • geçersiz kıl AssemblyVersion?)
  • Referans Çevre değişkeni (ben kaynak t tutmak alışığım Java/C++ 'da oluşturulan dosyaların komut satırı paramları ile temizlenmesine, tüm sürüm özelliklerini tek bir dosyada tanımlayıp merkezileştirir.

    Sürümleri eşit ve yönetilebilir tutmak için hangi yöntemi kullanıyorsunuz?

    Teşekkür

    Peter olursa olsun aslında sürüm numarasını güncellemek için aldığı rota ait

  • cevap

    5

    Üst klasörde, telif hakkı gibi yaygın olarak kullanılan bir CommonAssemblyInfo.cs dosyası koyarım. ve FileVersion. Bu dosya sadece bazı varsayılan öznitelikler içeriyor ve benim durumumda, sunucuda bir betik (basit bir .bat dosyası) ile rejenere ediliyor. AssemblyInfo.cs projelerinin her birinde bu ortak öznitelikleri kaldırın.

    Çözümdeki her projede bu dosyayı ekliyorum. ancak mevcut bir dosya eklediğinizde "Ekle" düğmesinin açılır listesinde bulunan "Bağlantı olarak ekle" yi kullanın. yani, tüm projeler sadece aynı dosyaya bir referans içerir, bu yüzden güncellenecek sadece bir dosya var.

    0

    , paylaşılan bir versiyonunu belirtmek için bireysel AssemblyInfo.cs dosyasını kullanabilirsiniz.

    Dosyayı, diğer projeler üzerinde bir düzeyde, yapı bakımından oluşturun ve sonra tüm projelere (Visual Studio'dan) ekleyin, ancak bunu yaptığınızda 'Bağlantı olarak ekle'yi seçin.

    Güncelleştirmeyi işlemek için bir MSBuild görevini de kullandım, sadece düşünemiyorum - hangi motoru kullanıyorsunuz?

    +0

    Şu anda Jenkins kullanıyoruz ve iki yaklaşım kullanıyoruz: 1) msbuildtask birçok AssemblyInfo Dosyasını günceller. 2) CommonAssemblyInfo.cs bir yapı betiği tarafından değiştirilen birçok projeye bağlı. –

    0

    Teorik olarak tek bir montaj dosyasına sahip olabilirsiniz. Dosyayı diğer tüm projelere bağla: Varolan dosyayı ekle >> bağlantı dosyası eklemek yerine (düğme açılır)