2010-06-04 8 views
1

빌드 번호 자동 증분에 대한 토론 중 일부를 살펴 보았지만 청소년의 조급함이 내 자신을 굴리고 바퀴를 다시 발명하기로 결정했습니다. 아마 이것에 관해 갈 수있는 더 나은 방법이있을 것입니다. (확실히 조사 할 것입니다.) 제 질문은 Assembly 클래스 및/또는 Version 클래스를 중심으로 이루어집니다.빌드 번호 증가가 AssemblyVersion에 반영되지 않았습니다.

필자의 접근 방식은 파일 이름에 명령 줄 매개 변수를 사용하는 별도의 exe (BuildIncrementer)를 작성하고 [assembly: AssemblyVersion...] 문자열을 잡아내는 정규식 일치를 수행하여 원하는 수정을 수행합니다 (빌드 번호, 등)을 입력 한 다음 내용을 다시 파일에 씁니다. 이 접근 방식은있는 그대로 작동합니다.

내가 한 일은 프로젝트에서이 프로젝트를 사용하고 싶었던 것입니다.이 프로젝트의 AssemblyInfo.cs 파일에서 BuildIncrementer.exe를 실행하기위한 명령 인 미리 빌드 명령 줄을 설정했습니다. 이것 역시 원하는대로 어셈블리 정보를 업데이트하여 작동합니다.

프로젝트를 실행할 때 문제는 Assembly.GetExecutingAssembly().GetName().Version.ToString()으로 얻은 현재 버전이 포함 된 전자 메일을 보냅니다. 하지만 표시되는 버전은 이며 이전 버전은입니다. 내 AssemblyInfo.cs가 [assembly: AssemblyVersion("1.0.2.49667")]이라고 말하면, 이전 빌드 인 1.0.1.45660이 전송됩니다.

누구나 그 이유는 무엇입니까?

+0

이이를하지 않는 한 그것을 할 수있는 더 좋은 방법이 있다는 것을 알고있는 경우 학업 성취를 위해 BuildIncrementer를 포기하고 Visual Studio의 기본 제공 기능을 사용하는 것이 어떻습니까? 그렇지 않으면 정상적으로 작동하는 것처럼 보입니다. AssemblyInfo.cs 파일과 비교하여 어셈블리 코드에 의해보고 된 버전 번호는 항상 이전 버전이며 시간에 고정 된 버전 번호가 아니라고 가정합니다. –

+0

네, 학문적 인 운동입니다. DIY 솔루션으로 놀아보십시오. 예,보고 된 버전 번호는 항상 고정 된 번호가 아닌 이전 번호입니다. 아마도 프로젝트가 구축되는 순서와 관련이 있는지 궁금합니다. 예를 들어, 미리 빌드 명령을 실행하기 전에 어셈블리 정보를 exe에 넣을 수 있습니까? – awshepard

답변

0

나는 전체 빌드 프로세스는 따라서 오래된 vesion을 반영 완료됩니다 (또는 시작됩니다) 전에 exe를 실행 생각 ... 어쩌면

+0

이것은 프로젝트를 빌드하고 AssemblyInfo 파일을 확인한 다음 (업데이트 된 버전 참조) exe를 시작한 경우에도 발생합니다. 미리 빌드가 완료되기 전에 exe가 빌드되고 있다고 말하는 것입니까? 그런 종류의 사전 구축 명령의 목적을 패배시키지 않습니까? – awshepard

관련 문제