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

  • ASUS

    ASUS

    22 EKİM 2005
  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010
  • Xbox

    Xbox

    1 Kasım 2005