Компиляция даты и времени
Есть ли какой-нибудь умный способ получения даты и времени создания/компиляции dll?
Im использую нумерацию и отражение версии сборки для извлечения и отображения этой информации при развертывании приложения. Но в некоторых сценариях было бы более удобно знать, когда dll был фактически скомпилирован, а не автоматически увеличивая номер версии. Я не думаю, что измененная дата в самом файле dll надежна из-за способа развертывания приложения.
Dim assemblies = AppDomain.CurrentDomain.GetAssemblies
Dim assemblyName As String
Dim assemblyVersion As String
For Each assembly In assemblies
assemblyName = assembly.GetName.Name.ToString
assemblyVersion = assembly.GetName.Version.ToString
' How to get the date/time of the build??
' ...
Next
Любые предложения?
Ответы
Ответ 1
Если вы установите версию сборки (обычно в AssemblyInfo.cs) на Major.Minor.*
(например, 1.0.*
), то вы, вероятно, можете получить дату сборки во время выполнения с помощью следующего:
var version = Assembly.GetExecutingAssembly().GetName().Version;
DateTime buildDate = new DateTime(2000, 1, 1)
.AddDays(version.Build)
.AddSeconds(version.Revision*2);
При использовании *
для третьей и четвертой части версии сборки эти две части автоматически устанавливаются во время компиляции со следующими значениями:
- Третья часть - количество дней с 2000-01-01
- Четвертая часть - это количество секунд с полуночи, разделенное на два (хотя некоторые страницы MSDN говорят, что это случайное число)
О, и вы должны сами заботиться о летнее время (например, добавить один час, если это летнее время).
Ответ 2
Как насчет:
new FileInfo(Assembly.GetExecutingAssembly().Location).CreationTime;