Чтобы получить инкрементную (DateTime) информацию в свойстве AssemblyFileVersion, преимущество которого состоит в том, что она не нарушает никаких зависимостей.
Опираясь на решение Boog (у меня не получилось, может быть из-за VS2008?), Вы можете использовать комбинацию события перед сборкой, создавая файл, добавляя этот файл (включая его свойства версии), а затем используя способ чтобы прочитать эти значения снова. То есть ..
Pre-Build-Event:
echo [assembly:System.Reflection.AssemblyFileVersion("%date:~-4,4%.%date:~-7,2%%date:~-10,2%.%time:~0,2%%time:~3,2%.%time:~-5,2%")] > $(ProjectDir)Properties\VersionInfo.cs
Включите полученный файл VersionInfo.cs (подпапка «Свойства») в ваш проект
Код для получения даты назад (годы до секунд):
var version = assembly.GetName().Version;
var fileVersionString = System.Diagnostics.FileVersionInfo.GetVersionInfo(assembly.Location).FileVersion;
Version fileVersion = new Version(fileVersionString);
var buildDateTime = new DateTime(fileVersion.Major, fileVersion.Minor/100, fileVersion.Minor%100, fileVersion.Build/100, fileVersion.Build%100, fileVersion.Revision);
Не очень удобно ... кроме того, я не знаю, создает ли он много принудительных перестроений (поскольку файл всегда изменяется).
Вы можете сделать это умнее, например, если будете обновлять файл VersionInfo.cs только каждые несколько минут / часов (используя временный файл, а затем копировать / перезаписывать настоящий VersionInfo.cs, если обнаружено достаточно большое изменение). Я сделал это однажды довольно успешно.