프로그래밍/C#, .NET

[.NET] 버전 자동 증가(변경) 기능 켜기

당근천국 2021. 5. 19. 15:30

예전에 비주얼 스튜디오에서 생성한 프로젝트는 빌드하면 자동으로 버전이 증가하는 기능이 있었습니다.

근데 이 기능이 어디로 사라진 거지???

 

연관글 영역

 

 

1. 기능이 없어진 이유

결정적 버전 관리라를 개념이 적용되면서 자동증가기능이 제거되었습니다.

 

버전을 관리하는데 같은 버전은 빌드하든 뭘하든 같은 놈으로 취급한다....

이런 개념입니다.

(참고 : MSDN - 코드 생성을 제어하는 C# 컴파일러 옵션 : 결정적)

 

 

앵? 원래 그거 구분해서 썼던 거 아닌가?????

라고 하시는 분을 위해!

 

만약 전체변수 하나 수정해서 배포했다고 하면..

기존 버전 사용자도 상관 그냥 써도 되고 새 버전 받은 사람도 상관없이 써도 된다면 

굳이 판올림을 하지 않고 배포를 해도 됩니다.

 

이런 경우 자동증가를 켜두었다면 또 버전이 달라집니다.

 

수동으로 배포하던 시절에야 이게 큰 문제가 되지 않았는데

이제는 누겟을 비롯하여 다양한 스토어 형태의 다운로드 관리시스템이 있다 보니 버전 정보가 다르면 다른 버전으로 인식하여 처리한다는 문제가 생겼죠.

 

버전 확인 방법

프로젝트 속성 > 패키지

여기서 버전을 확인할 수 있습니다.

 

여기와 실제 출력된 파일의 버전이 다를 수 있는데 이럴 때는 빌드된 프로그램의 실행 파일이나 출력 파일에서

속성 > 자세히

 

 

 

어셈블리 버전 = 제품 버전

어셈블리 파일 버전 = 파일 버전

 

파일 버전은 내부(프로젝트 참여자)용 버전이고

제품 버전은 릴리즈 기준 버전이라고 보시면 됩니다.

 

 

2. 버전 자동 증가 기능 켜기

어셈블리 버전은 와일드카드를 사용할 수 있습니다.

"*"을 사용하여 자동으로 증가하도록 해줍니다.

 

프로젝트 속성 > 패키지

어셈블리 버전에 와일드카드를 넣어 줍니다.

 

근데 막상 넣어보면 경고가 뜹니다.

지정한 버전 문자열이 권장 형식 major.minor.build.revision을 따르지 않습니다.

 

 

버전이 바뀌지 않는다.

원래 이렇게 하면 자동으로 버전이 바뀌어야 하지만....

적용이 안 되는 것을 알 수 있습니다.

 

일단 'AssemblyInfo.cs'파일을 생성합니다.

 

다음 코드를 추가해 줍니다.

1
2
3
4
5
using System.Reflection;
 
...
 
[assembly: AssemblyVersion("1.0.0.*")]
cs

 

이 상태로 빌드하면 다음과 같은 에러가 납니다.

 

해결방법은 아래와 같습니다.

참고 - [.NET] "'System.Reflection.AssemblyVersionAttribute' 특성이 중복되었습니다." 오류 해결하기

 

 

3. 테스트하기

이제 빌드를 하고 파일의 버전을 확인합시다.

 

또 빌드하면

 

버전이 바뀝니다.

 

 

마무리

좀 더 정교하게 버전을 컨트롤하려면 좀 더 손을 써야 합니다.

근데 이것도 이제는 권장하지 않는 방식이니 이제는 놓아주어야겠군요 ㅎㅎㅎㅎ