Assembly Versionunu Merkezileştirmek (Shared Assembly Info) – Oğuzhan Blog
Oğuzhan YILMAZ	in .Net	| 25/04/2013
Assembly Versionunu Merkezileştirmek (Shared Assembly Info)
Bütün developer insanları yaşamıştır. Visual Studio’yu açarsınız temiz bir solution oluşturmuşsunuzdur “bismillah” deyip projeye başlarsınız ve zaman içinde solution’ın içinde onlarca proje eklenmeye başlar. Sağlam bir CI (Continuous Integration) yaptıysanız mesele yok ama pek sallamayıp “kervan yolda düzlür” mantığı ile giderseniz ilerde baya bir sıkıntı olur. Neyse CI olayına pek sarmak istemiyorum maksat pratik bilgi vermek.
Konu versionlama. Yukarıda da söyledim. Bir ton projeniz var ve hepsinin ortak bazı Assembly direktifleri (AssemblyAttributes) var. Normalde ne yaparsınız merkezi bir klasörde AssemblyInfo.cs dosyasını oluşturursunuz ve her eklediğiniz projeye Add > Existing Item diyip “Add As Link” olarak eklersiniz ve ordan devam edersiniz.
Bazı durumlarda Assembly direktifleri hem ortak hem de projeye özel olabilir.
Bu durumda da şu yolu izleyebilirsiniz;
Ortak bir alanda (Örneğin: Solution Item klasöründe) SharedAssemblyInfo.cs isminde bir Class dosyası oluşturun. İsminin bir önemi yok Version.cs de yapabilirsiniz. Hangi dizinin altında olduğununda pek bir önemi yok ama kaidelere uyup Properties altına Link olarak ekledinizmi iyi olur.
Şimdi benim senaryomda projedeki üretilen tüm Assembly’lerin verionunun aynı olması gerekiyordu. Bu nedenle tüm projelere SharedAssemblyInfo.cs dosyasını linkledim fakat SharedAssembly.cs dosyasında olan direktifler AssemblyInfo.cs için de de olduğundan tüm üretilen dosyalarda aynı olmasını istediğim kısımları AssemblyInfo.cs dosyasından sildim. Böylece version ve diğer direktifleri merkezileştirmiş olduk.
Her direktif için ayrı bir dosya yapabilirsiniz ve yine bunları paylaştırabilirsiniz.
Solution biraz karmaşıksa bir kaç araç tavsiyesi;
Pratik bir araç http://autobuildversion.codeplex.com/
T4 Tempaltes’de kullanabiliyormuşuz. Bu olayı çözüyor ama acı çektirir baya
Kökten çözüm :) Autoincrement Version in Visual Studio http://www.codeproject.com/Articles/80862/Autoincrement-Version-in-Visual-Studio
Bu arada AssemblyVersion’ı numaralarını en fazla [assembly: AssemblyVersion(“65534.65534.65534.65534”)] şeklinde verebiliyormuşuz.