2012-12-18 11 views
11

1.5.4735.28467 olarak derlenmiş bir sürüm 1.5 numaram var."*" (joker) sürüm numaraları için .NET'teki formül nedir?

4735 ve 28467 almak için formül nedir?

+1

majör, inşa, revizyon:


İşte (Daniel'in açıklama çıkarılan gibi) formülünün bir uygulamasıdır. Yapı ve revizyon size kalmış .... –

+0

http://blogs.msdn.com/b/jensenh/archive/2005/11/11/491779.aspx. Ancak bu Microsoft Office için; .NET Framework için aynı şekilde çalışıp çalışmadığını bilmiyorum. –

+7

Build = DateTime.Today.Subtract (yeni DateTime (2000, 1, 1)). Günler; Revision = (int) DateTime.Now.Subtract (DateTime.Today) .TotalSeconds/2; Çok kötü bu kapanmış; iddia edilen yinelenen farklı bir soru ... – Daniel

cevap

18

unutmayın:alternatif araçlar/kurallar/şemalar/makro/eklentileri vb farklı bir şekilde sürüm kontrolü için/var; eğer kullanılırsa, aşağıdakileri açıkça yok ederler.

Ancak, bu "*" sürümü vanilya Visual Studio/NET inşa sürecinde .build.revision için nasıl hesaplandığını geçerli:

bir sürümünü belirterek, en azından büyük belirtmek gerekir. Büyük ve küçük belirtirseniz, , oluşturmak için bir yıldız işareti (*) belirtebilirsiniz. Bu inşa 1 Ocak 2000 yerel saat itibaren geçen gün sayısı eşit olacak şekilde neden olur ve revizyon için 2.

bölü gece yarısı yerel saat beri saniye sayısı eşit olmalıdır

Bkz. Coding Horror: Determining Build Date the hard way ve MSDN: AssemblyVersionAttribute. Bu varsayılan genişletme davranışı AssemblyVersionAttribute sınıfında (BCL!) belgelenmiştir ve özel derleyici davranışı (bkz. Daniel'in yorumu) değil, yalnızca derleyici davranışıdır.

minör,
int Build = DateTime.Today.Subtract(new DateTime(2000, 1, 1)).Days; 
int Revision = (int)DateTime.Now.Subtract(DateTime.Today).TotalSeconds/2; 
+3

Bu kesinlikle derleyici davranışı. Derleyici herhangi bir özniteliği başlatmaz; Sadece meta verilerdeki argüman değerlerini kodlar. Ama sayı derleme zamanında ikame edilir; derleyicide özel bir durum olmalı. Benzer bir şey yapmak için özel bir özellik yazmanın yolu yoktur. – Daniel

+0

@Daniel Bu iyi bir argüman. Sürüm numaralarının nasıl çalıştığı konusunda bir VS (.NET değil) referansı bulabilseydim. –

+2

Ayrıca uygulamayı Roslyn'de de görebilirsiniz: http://source.roslyn.codeplex.com/#Microsoft.CodeAnalysis/VersionHelper.cs,95 – eug

İlgili konular