2009-07-27 9 views
33

우리는 빌드를 [메이저]. [마이너]. [마이크로]. [리비전]으로 버전 관리하는 규칙을가집니다. 2.1.2.33546..NET : AssemblyVersionAttribute의 큰 개정 번호

우리의 빌드 스크립트가 자동으로 어셈블리의 버전 번호를 포함하기 위해

[assembly: AssemblyVersion("x.y.z.w")] 

포함 된 AssemblyInfo.cs 파일을 업데이트합니다.

하지만 우리 Subversion 저장소가 개정판 # 65535에 도달하여 빌드가 손상되었습니다.

버전 번호의 각 숫자는 최대 값이 65534 인 것으로 나타났습니다 (Windows 제한 때문일 수 있음).

이 문제가 발생 했습니까? 좋은 해결책/해결 방법은 없습니까?

우리는 개정 번호를 삽입의 방식을 좋아하고

답변

36

A가 더 배경 정보 비트 :이 바뀌지 않을 수 있습니다으로

Why are build numbers limited to 65535?

을, 옵션은 다음과 같습니다

  • 는 1로 돌아 의미 개정 모듈로 65535을 가지고
  • 버전 번호로 마이크로 필드를 사용하여 버전을 1000으로 나누면 버전 번호가 1.0.65.535가됩니다.
  • SVN 버전을 AssemblyVersion에 저장하지 말고 AssemblyInformationalVersion에 저장하십시오. Windows 탐색기를 사용하여 더 이상 SVN 수정본을 신속하게 확인할 수는 없지만 응용 프로그램은 여전히 ​​표시 목적으로 응용 프로그램에 액세스 할 수 있습니다.
  • SVN 수정본을 AssemblyVersion에 저장하지 말고 AssemblyProduct 또는 AssemblyDescription 필드에 저장하십시오. 다시 말하지만, 응용 프로그램에서 계속 액세스 할 수 있지만 Explorer에서도 속성 시트에 표시됩니다.
+5

AssemblyInformationalVerison에 넣으면 Windows 탐색기에서 "Product Version"속성 아래에서 볼 수 있습니다. 그래서 좋은 선택입니다. – xagyg

9

하나의 옵션이 바로 [AssemblyFileVersion]을 사용할 수 있습니다 :-) 우리는 분명히 우리의 서브 버전 서버를 재설정 할 수 없습니다; 이것은 여전히 ​​경고를 제기하지만 적어도, 만들 수 있습니다 : 당신이 더 큰 저장할 수 없습니다 즉,

[assembly: AssemblyFileVersion("1.0.0.80000")] 
+4

이 문제는 이후 버전의 msbuild (4.0)에서 수정되었으며 더 이상 경고를 표시하지 않습니다. – JoshSchlesinger

4

According to MSDN의 AssemblyVersionAttribute 버전 번호의 구성 요소 어셈블리 메타 데이터에 의해 UInt16.MaxValue - 1로 제한됩니다 어셈블리 파일의 숫자. Marc Gravell이 제안한 것처럼 파일 버전은 사용자의 버전 번호를 읽을 사람에 따라 충분할 수 있습니다.

6

우리는 동일한 규칙을 사용하기로 결정했으며 Windows 버전 번호의 제한으로 인해 개정 번호를 유지하기 위해 버전 번호의 "마이크로"부분을 삭제했습니다. 우리의 버전 번호는 이제 [major].[minor].[revision/10000].[revision % 10000]이므로 개정판 65535로 빌드 된 어셈블리의 버전은 2.01.6.5535입니다.

+0

저는 +1을 좋아합니다. 어떻게 AssemblyInfo.cs에 값을 주입합니까? –

+9

이렇게하면 Windows Installer에서 "보조 업그레이드"를 사용하지 않도록하십시오 (예 :업그레이드를 수행하면 전체 제거/재설치가 수행되지 않음). Windows 설치 프로그램은 4th 버전 구성 요소를 완전히 무시합니다. 릴리스를 반영하도록 더 이상 세 번째 버전 구성 요소를 수동으로 업데이트하지 않으면 Windows Installer가 특정 파일을 업데이트하지 못할 수 있습니다. –

+2

@Ray Hayes : NAnt 빌드 스크립트는'svn info를 사용합니다. --xml'을 사용하여 작업 사본의 개정 번호를 얻은 다음 사용자 정의 작성 유틸리티를 호출하여 해당 개정을 [AssemblyVersion] 속성을 포함하는 "SolutionInfo.cs"파일로 출력합니다. 이 파일은 Subversion에 추가되지 않고 모든 프로젝트에서 참조되며 (VS에서 "링크로 추가"사용) 모든 솔루션에서 최신 버전 번호로 빌드됩니다. –