Определить, был ли DateTime включен в версию .NET assembly во время компиляции?

#.net #datetime #assemblies #version #compile-time

#.net #datetime #сборки #версия #время компиляции

Вопрос:

Как я узнаю, что добавление значений сборки и ревизии задано.NET assembly to new DateTime(2000, 1, 1) даст мне время компиляции?

Другими словами: как я узнаю, что [assembly: AssemblyVersion("1.0.*")] атрибут использовался для сборки во время компиляции?

Комментарии:

1. erm… Сборка и редактирование — это не время компиляции, они просто увеличивают числа, идентифицирующие конкретную версию dll из любой другой версии. Они не имеют ничего общего со временем компиляции.

2. и даже если у кого-то есть такое соглашение, чтобы установить для них эти значения, нет способа проверить этот факт, кроме как спросив людей, которые создали сборку.

3. Тег ‘assembly’ предназначен для низкоуровневого программирования, а не для . СЕТЕВЫЕ сборки.

Ответ №1:

Вы этого не делаете. AssemblyVersionAttribute Просто хранит кучу чисел. Эти числа могут быть:

  • Назначается вручную
  • Автоматическое увеличение
  • На основе даты и времени
  • На основе номеров версий системы управления версиями

Вам нечего AssemblyVersionAttribute сказать об этом.

Ответ №2:

Вы могли бы использовать это:

 static string TimestampFromVersion(string version)
{
    string[] versionComponents = version.Split('.');
    DateTime potentialCompilationDate = (new DateTime(2000, 1, 1)).AddDays(versionComponents[2]).AddSeconds(2 * versionComponents[3]);
    return potentialCompilationDate.ToString("dd MMM yyyy, HH:mm:ss");
}
  

и сверьте с меткой времени файла…