Some people think that Assembly doesn't holds build date but you know what they are wrong,
you can be retrieve the linker timestamp from the PE header embedded in the executable file, like following may work (i havn't tested the code myself)
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;
}
or if assembly is your's own better you use following approach simple and easy
Add below to pre-build event command line:
echo %date% %time% > "$(ProjectDir)\Resources\BuildDate.txt"
Add this file as resource, now you have 'BuildDate' string in your resources.
I have taken both answers from this question