[.NET] 버전 자동 증가(변경) 기능 켜기
예전에 비주얼 스튜디오에서 생성한 프로젝트는 빌드하면 자동으로 버전이 증가하는 기능이 있었습니다.
근데 이 기능이 어디로 사라진 거지???
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. 테스트하기
이제 빌드를 하고 파일의 버전을 확인합시다.
또 빌드하면
버전이 바뀝니다.
마무리
좀 더 정교하게 버전을 컨트롤하려면 좀 더 손을 써야 합니다.
근데 이것도 이제는 권장하지 않는 방식이니 이제는 놓아주어야겠군요 ㅎㅎㅎㅎ