.NET 어셈블리 버전 관리에 SVN 수정 번호 포함하기

소프트웨어 개발 세계에서 버전 관리를 유지하는 것은 매우 중요합니다. Subversion(SVN)을 버전 관리 시스템으로 사용하는 경우, .NET 어셈블리의 버전 문자열에 SVN 리포지토리 수정 번호를 포함할 수 있는 기능은 추적 가능성과 디버깅의 용이성을 향상시킬 수 있습니다. *“CC.NET과 같은 제3자 도구 없이 이 작업을 수행할 수 있는 방법이 있을까?"*라고 질문하셨다면, 대답은 확실한 “예"입니다.

문제: 추가 도구 없이 버전 관리하기

버전 문자열이 주요 및 부 버전 번호뿐만 아니라 SVN 수정 번호도 반영해야 하는 상황을 만난 적이 있을 것입니다. 일반적으로 고려할 수 있는 목표 버전 형식은 다음과 같습니다:

Major.Minor.SVNRev

안타깝게도, 추가 소프트웨어 없이 .NET에서 이를 달성하는 간단한 방법을 찾는 것은 특히 C 또는 C++와 같은 언어에서 유사한 작업을 수행한 적이 있다면 어려울 수 있습니다. C/C++에서는 빌드 스크립트를 사용하여 버전 번호로 헤더 파일을 업데이트하는 방식으로 이를 수행할 수 있었습니다.

해결책: SubWCRev 사용하기

SVN 수정 번호를 .NET 어셈블리 버전 관리에 통합하는 효과적인 방법 중 하나는 TortoiseSVN과 함께 제공되는 유틸리티인 SubWCRev를 사용하는 것입니다. SubWCRev는 파일의 SVN 키워드를 읽고, 빌드 과정 중에 적절한 수정 정보를 바꿉니다.

SubWCRev 구현 단계별 가이드

  1. TortoiseSVN 다운로드 및 구성:

    • 아직 다운로드하지 않았다면 TortoiseSVN을 다운로드하십시오.
    • 설치하여 번들된 SubWCRev 유틸리티에 접근합니다.
  2. AssemblyInfo.cs 설정하기:

    • AssemblyInfo.cs 파일을 엽니다. 이 파일은 일반적으로 어셈블리의 버전 정보를 포함합니다.
    • SubWCRev에 의해 버전 번호로 대체될 자리 표시자를 추가합니다.

    예시:

    [assembly: AssemblyVersion("1.0.0.0")]
    [assembly: AssemblyFileVersion("1.0.0.0")]
    [assembly: AssemblyInformationalVersion("1.0.0.0")]
    
  3. 템플릿 파일 만들기:

    • 새 텍스트 파일(예: VersionInfo.txt)을 만들고 버전 정보가 어떻게 채워질지 정의하도록 구조를 만듭니다.
    • 수정 번호에 대한 자리 표시자를 사용합니다.

    VersionInfo.txt 예시:

    [assembly: AssemblyVersion("${VersionNumber}.0")]
    [assembly: AssemblyFileVersion("${VersionNumber}.0")]
    [assembly: AssemblyInformationalVersion("${VersionNumber}.${Revision}")]
    
  4. SubWCRev 실행하기:

    • SubWCRev 명령을 사용하여 VersionInfo.txt 파일의 자리 표시자를 SVN 리포지토리의 실제 버전 번호로 대체합니다.
    • 이는 일반적으로 명령줄 또는 빌드 스크립트에 포함하여 수행할 수 있습니다.
  5. 프로젝트 빌드하기:

    • 프로젝트를 빌드할 때 SubWCRev는 SVN 수정으로 채워진 버전을 가진 새로운 AssemblyInfo.cs를 생성합니다.

결론

SubWCRev을 .NET 프로젝트 작업 흐름에 통합함으로써 어셈블리의 버전 문자열에 SVN 수정 번호를 포함시킬 수 있으며, CC.NET과 같은 외부 소프트웨어에 의존할 필요가 없습니다. 이 접근법은 버전 관리가 더 유익해질 뿐만 아니라 직관적이고 관리하기 쉽게 유지합니다.

이제 .NET 어셈블리 버전 관리에 SVN 수정 번호를 포함하는 방법을 알게 되었으니, 다음 프로젝트에서 시도해보세요. 그 명료함을 느낄 수 있을 것입니다.