[C#] AssemblyInfo.cs 파일을 사용한 빌드 버전 및 날짜 표시

2022. 8. 23. 06:33 · Language/C#

 

S/W 개발을 하면서 디버깅 및 관리를 하기 위해 버전 정보를 표시하곤 합니다.

본 글에선 C#에서 버전정보를 가장 쉽게 관리하는 방법에 대해 설명드리려고 합니다.

 

본 예제에선 Visual Studio 2019 버전을 사용 하였지만 프로젝트 생성하는 UI만 다를뿐 동작은 다르지 크게 다르지 않습니다.

 

프로젝트 생성

우선 프로젝트 생성을 합니다.

 

새 프로젝트 생성

Windows Forms 앱(.NET Framework)를 선택 후 다음을 눌러주세요.

 

프로젝트 이름 설정

프로젝트 이름을 본인이 원하는 이름으로 입력 후 만들기를 눌러주세요.

 

프로젝트 오른쪽 클릭 메뉴

 

그 후 솔루션 탐색기에서 프로젝트를 오른쪽 클릭하여 파일 탐색기에서 폴더를 열어주세요.

 

프로젝트 폴더

프로젝트 파일 수정

프로젝트 폴더 내 WindowsFormsApp1(자신이 설정한 프로젝트 이름).csproj 파일을
오른쪽 클릭 -> 연결 프로그램 -> 메모장 선택
(만약 메모장이 보이지 않는다면 다른 앱 선택 클릭 -> 메모장 선택)

 

프로젝트 파일을 메모장으로 불러온 모습

Deterministic 값을 true -> false로 변경 후 저장해주세요.

<Deterministic>false</Deterministic>

그 후 Visual Studio를 다시 클릭하면 아래와 같은 팝업이 뜹니다.

 

AssemlyInfo 수정

모두 다시 로드를 선택 한 후 Properties - AssemblyInfo.cs 파일을 열어줍니다.

Properties - AssemblyInfo.cs

 

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
// 이러한 특성 값을 변경하세요.
[assembly: AssemblyTitle("WindowsFormsApp1")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WindowsFormsApp1")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
[assembly: ComVisible(false)]

// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("b9bbbeb8-62d9-449b-8657-f543e36aa958")]

// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
//      주 버전
//      부 버전 
//      빌드 번호
//      수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
// 기본값으로 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

아래와 같이 변경해주세요.

변경 전
변경 후

빌드 정보 가져오기

 

그 후 저장을 누르고 아래와 같이 코드를 입력 합니다.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            InitializeControl();
        }

        private void InitializeControl()
        {
            Version version = Assembly.GetExecutingAssembly().GetName().Version;

            string strVersion = string.Format("[ Last Build : {0} - Ver : {1} ]",
                GetBuildTime(version), version);

            this.Text = "MainForm - " + strVersion;
        }

        public DateTime GetBuildTime(Version version)
        {
            int day = version.Build;
            System.DateTime buildTime = (new System.DateTime(1990, 1, 1)).AddDays(day);
            
            int second = version.Revision;
            second = second * 2;
            buildTime = buildTime.AddSeconds(second);


            //시차 보정
            System.Globalization.DaylightTime daylingTime = System.TimeZone.CurrentTimeZone
                    .GetDaylightChanges(buildTime.Year);
            if (System.TimeZone.IsDaylightSavingTime(buildTime, daylingTime))
                buildTime = buildTime.Add(daylingTime.Delta);

            return buildTime;
        }
    }
}

그 후 빌드하면 타이틀에 빌드 날짜와 버전을 표시하게 됩니다.

완성

 

 

 

 

 

 

 

 

 

 

 

 

'Language/C#' 카테고리의 다른 글
  • [C#] DevExpress 연동하기
매브
매브
개발에 대한 내용을 다루는 블로그 입니다.
  • 매브
    Mad Dev
    매브
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 공지사항
    • 방명록
    • Programming (3)
      • Language (2)
        • C++ (0)
        • C# (2)
        • CLI (0)
        • Xamarin (0)
        • Flutter (0)
      • Image Process (0)
      • Machine Vision (0)
        • Camera (0)
        • Frame Grabber (0)
        • Lens (0)
        • Light (0)
        • Filter (0)
      • Machine Learning (0)
      • etc (1)
  • 공지사항

  • 인기 글

  • 태그

    c#
    AssemblyInfo.cs
    devexpress연동
    VisualStudio
    GridControl
    .net
    소프트웨어
    버전관리
    빌드버전관리
    소프트웨어 버전 번호
    DevExpress
    버전 관리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
매브
[C#] AssemblyInfo.cs 파일을 사용한 빌드 버전 및 날짜 표시
상단으로

티스토리툴바