2009-08-14 2 views
14

Есть ли какой-нибудь умный способ получения даты и времени создания/компиляции dll?Дата и время компиляции

Я использую нумерацию и отражение версии сборки для извлечения и отображения этой информации при развертывании приложения. Но в некоторых сценариях было бы более удобно знать , когда, тогда 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 

Любые предложения?

ответ

17

Если вы установили версию сборки (обычно в 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
  • четвёртой части числа секунд, прошедших с полуночи, разделенных на два (хотя some MSDN pages говорят, что это случайное число)

О, и вы должны заботиться о летнем время самостоятельно (например, добавьте один час, если это летнее время).

+1

Это довольно удивительным, он работает как шарм. Благодаря! :) –

+0

Этот трюк спас мой день! –

1

насчет:

new FileInfo(Assembly.GetExecutingAssembly().Location).CreationTime; 
+3

Это не очень хорошая идея, потому что она нестабильна и может быть легко изменена. В качестве примера просто скачайте файл с некоторого FTP-сервера и посмотрите дату создания. Вы получите дату, когда файл был создан на вашем компьютере. Это приводит к неправильной информации. Это также может произойти (в зависимости от используемой вами программы), если вы застегиваете ZIP-код, разархивируете файл или отправляете его в качестве прикрепления по почте кому-то. Во всех этих случаях время творения является хорошим кандидатом на изменение. – Oliver

+2

Как насчет последней измененной даты? – joshcomley

+1

Да, по моему опыту, измененная дата более точна, чем дата создания (в файлах, где модификация после создания на самом деле не происходит). – Abacus