Как установить постоянную «дату выпуска» для проекта в Visual Studio? - PullRequest
1 голос
/ 30 августа 2011

Я хотел бы добавить в свое консольное приложение информацию (например, к «начальному экрану» или «экрану использования») о том, когда программа была в последний раз выпущена (скомпилирована).

Могу ли я добавить это в свой проект?

Спасибо!

1 Ответ

2 голосов
/ 30 августа 2011

Попробуйте это или вниз для лучшего метода!

DateTime buildDate = 
   new FileInfo(Assembly.GetExecutingAssembly().Location).LastWriteTime;

Чтобы использовать его, например

Console.WriteLine(buildDate.ToString("dddd, dd MMMM yyyy HH:mm:ss"));

Должен выводиться в формате вроде Tuesday, 30 August 2011 09:44:07

Редактировать: очевидно, что это зависит от файловой системы, но я нашел эту страницу

Вот это преобразовано в C #

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);
    dt = dt.AddSeconds(secondsSince1970);
    dt = dt.AddHours(TimeZone.CurrentTimeZone.GetUtcOffset(dt).Hours);
    return dt;
}

Кредит идет Джеффу Этвуду

Так что вы должны быть в состоянии использовать его вот так

Console.WriteLine(RetrieveLinkerTimestamp().ToString("dddd, dd MMMM yyyy HH:mm:ss"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...