Assembly의 Build된 일시를 구하기 위한 방법을 설명 드립니다.
- 먼저 [Properties] 폴더에 [AssemblyInf.cs]를 엽니다.
- 다음과 같은 부분을 찾습니다. 보통 최 하단에 위치하고 있습니다.
3 |
[assembly: AssemblyVersion( "1.0.0.0" )] |
4 |
[assembly: AssemblyFileVersion( "1.0.0.0" )] |
- 주석 문구와 같이 버전의 정보를 사용자가 직접 설정할 수도 있고, 자동으로 설정되도록 할 수 있습니다. 자동으로 설정되도록 하기 위해 아래와 같이 변경합니다.
3 |
[assembly: AssemblyVersion( "1.0.*" )] |
4 |
[assembly: AssemblyFileVersion( "1.0.*" )] |
- AssemblyVersion을 자동으로 설정되도록 하면, Build된 일시 정보를 바탕으로 Version Text값을 생성됩니다. 실제 생성되는 Version Text는 아래의 구조를 가집니다.
- 위와 같이 공식을 알았으니 이제, Version Text를 읽어서 DateTime으로 변환해 봅시다!
02 |
/// Version Text로부터 Build된 일시를 구합니다. |
04 |
/// <returns></returns> |
05 |
public DateTime getBuildDateTime() |
10 |
string strVersionText = Assembly.GetExecutingAssembly().FullName |
17 |
int intDays = Convert.ToInt32(strVersionText.Split( '.' )[2]); |
18 |
DateTime refDate = new DateTime(2000, 1, 1); |
19 |
DateTime dtBuildDate = refDate.AddDays(intDays); |
23 |
int intSeconds = Convert.ToInt32(strVersionText.Split( '.' )[3]); |
24 |
intSeconds = intSeconds * 2; |
25 |
dtBuildDate = dtBuildDate.AddSeconds(intSeconds); |
29 |
DaylightTime daylingTime = TimeZone.CurrentTimeZone |
30 |
.GetDaylightChanges(dtBuildDate.Year); |
31 |
if (TimeZone.IsDaylightSavingTime(dtBuildDate, daylingTime)) |
32 |
dtBuildDate = dtBuildDate.Add(daylingTime.Delta); |
아, 물론 Assembly 파일자체의 작성시간을 통해 BuildDate를 구하는 방법도 있습니다.
2 |
/// Assembly의 Build된 일시를 구합니다. |
4 |
/// <returns></returns> |
5 |
public DateTime getBuildDateTime() |
7 |
Assembly assembly = Assembly.GetExecutingAssembly(); |
8 |
return System.IO.File.GetLastWriteTime(assembly.Location); |