SORU
21 EKİM 2009, ÇARŞAMBA


Görüntüleme Yapım Tarihi

Ben şu anda bir uygulama başlık penceresinde build numarasını görüntüleniyor. Bu iyi ve güzel dışında bir şey ifade etmiyor çoğu kullanıcı, tanımak isteyen varsa onlar en son yapı - eğilimi söz olarak "geçen Perşembe" yerine inşa 1.0.8.4321.

Planı oluşturmak tarih yok yerine koymaktır - "" örneğin. 21/10/2009 App inşa

İnşa tarihi bu şekilde kullanmak için bir metin dizesi olarak çıkarmak için programlı bir yol bulmak için mücadele ediyorum.

Yapı numarası için kullandım

Assembly.GetExecutingAssembly().GetName().Version.ToString()

o geldi nasıl tanımladıktan sonra.

İçin derleme tarih (ve saat, bonus puan için) gibi bir şey istiyorum.

Göstericiler burada çok takdir doğru olmadığını bahane kelime oyunu), ya da daha güzel çözümler...

Mark

CEVAP
21 EKİM 2009, ÇARŞAMBA


Jeff Atwood Determining Build Date the hard way Bu konu hakkında söylemek istediğim şeyler vardı.

En güvenilir yöntem çıkacak alınıyor linker damgası PE header gömülü olan çalıştırılabilir dosya -- bazı C# kodu (Joe Spivey) için yorum Jeff'in madde:

private DateTime RetrieveLinkerTimestamp()
{
    string filePath = System.Reflection.Assembly.GetCallingAssembly().Location;
    const int c_PeHeaderOffset = 60;
    const int c_LinkerTimestampOffset = 8;
    byte[] b = new byte[2048];
    System.IO.Stream s = null;

    try
    {
        s = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
        s.Read(b, 0, 2048);
    }
    finally
    {
        if (s != null)
        {
            s.Close();
        }
    }

    int i = System.BitConverter.ToInt32(b, c_PeHeaderOffset);
    int secondsSince1970 = System.BitConverter.ToInt32(b, i   c_LinkerTimestampOffset);
    DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    dt = dt.AddSeconds(secondsSince1970);
    dt = dt.ToLocalTime();
    return dt;
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • khloe brooks

    khloe brooks

    25 Temmuz 2011
  • Simon Hayter

    Simon Hayter

    20 HAZİRAN 2010
  • Stanislav Petrov

    Stanislav Pe

    7 ŞUBAT 2009