SVN에 저장되고 각 빌드마다 변경되는 AssemblyInfo.cs를 어떻게 관리합니까?

StackOverflow https://stackoverflow.com/questions/688051

문제

다음과 같은 시나리오가 있습니다.애플리케이션은 IDE와 빌드 스크립트를 통해 구축됩니다.빌드 스크립트는 초기 설정(종속성 가져오기, 환경 설정), 바이너리 생성 및 지속적인 통합 프로세스에 사용됩니다.바이너리가 빌드 시 월과 일을 AssemblyFileVersion으로 갖고 개정판에서 svn 개정판을 갖기를 원합니다.이로 인해 모든 개정에서 AssemblyInfo.cs가 변경되어 소스 제어 로그에 많은 노이즈가 발생합니다.파일을 무시할 수 있지만 설정의 일부로 파일을 다시 생성해야 합니다.

다른 아이디어가 있는 사람이 있는지, 아니면 이 경우 어떻게 해야 하는지 알고 싶습니다.

도움이 되었습니까?

해결책

지금은 Andy White의 답변에서 영감을 받은 솔루션을 선택했습니다.

  • AssemblyInfo.cs는 다음에 의해 생성됩니다. 조립정보 작업 http://msbuildtasks.tigris.org/ 소스 제어 트리 외부에 보관됩니다.
  • 버전은 [주].[부].[월][일].[svn 개정]입니다.Major 및 Minor는 수동으로 설정되고 나머지는 빌드 스크립트에 의해 관리됩니다.그만큼 커뮤니티 작업 pack에는 작업 복사본 svn 개정판과 날짜를 얻는 데 필요한 두 가지 작업이 모두 포함되어 있습니다.

단점:

  • 누군가가 새로운 사본을 체크아웃하면 설정 빌드 스크립트의 대상을 실행해야 합니다. 그렇지 않으면 Visual Studio에서 파일 누락에 대해 불평합니다.이것은 앞으로 제거하고 싶은 문제입니다.

다른 팁

어셈블리 인포.

생성하면 원하는 임의/구성 가능한 설정을 사용할 수 있습니다.

나는 Nant가 있다고 믿는다 <asminfo> 이 목적을위한 과제. MSBuild 와도 비슷한 것이 있다고 생각합니다. 또는 사용자 정의 파일 생성 스크립트를 작성하여 사용하여 사용자 정의 AssemblyInfo.cs를 빌드에 밀어 넣을 수 있습니다.

RTM/RTW/GA/(무엇이든 :) 릴리스 빌드 후 트렁크에서 어셈블리 인포 만 업데이트합니다.

우리의 야간/베타/rc/qa/(무엇이든 :) 빌드 만 사본 업데이트 된 AssemblyInfo.cs (CI 서버의 작업 사본에서)에서 해당 브랜치 또는 태그로. 우리는 전복을 사용하며, 커밋되지 않은 변경 사항이있는 작업 사본을 분기/태그 할 수 있습니다.

이를 통해 브랜치 또는 태그의 야간/베타 빌드에 대한 올바른 버전의 AssemblyInfo를 모두 유지하고 최종 릴리스가 이루어진 후 트렁크에서 AssemblyInfo 만 터치 할 수 있습니다. 빌드 서버에는이 유형의 빌드에서 트렁크에 이것을 커밋하도록 지시하는 스위치가 있습니다.

FWIW, 우리는 MSBuild 스크립트에서 모든 것을 구동하며, 각 프로젝트 유형에 대해 설정된 속성에 대해 다른 값을 사용하여 빌드 서버 (cruisecontrol.net)에서 전달됩니다.

편집] 또한 개발자의 어셈블리 인포 버전은 업데이트되지 않았으므로 (수동으로 변경하지 않는 한) 각 빌드에서 수정 된 AssemblyInfo의 노이즈를 얻지 못합니다. 우리는 개발자들이 제어 할 수있게 해줍니다 전공, 빌드 서버가 제어합니다 짓다, 그리고 우리는 QA가 자신의 시스템에 연결하도록 개정을 남깁니다 (어쨌든 Wix/MSI에 의해 무시되기 때문에).

변경된 AssemblyInfo.cs를 소스 제어로 다시 확인하지 않으면 왜 소음이 있습니까?

전체 빌드에 단일 값의 AssemblyFileVersion 값을 사용하고 해당 버전이 포함 된 단일 파일을 확인하거나 버전 번호로 빌드에 레이블을 지정하는 것이 좋습니다. 이렇게하면 여러 수정 된 AssemblyInfo.cs 파일을 확인할 필요가 없습니다.

또한 Generation 단계를 사용하여 AssemblyInfo를 만듭니다. [CS | VB] 파일은 단순히 파일의 템플릿 사본을 소스로 사용한 다음 작은 Perl 스크립트를 사용하여 해당 템플릿을 구문 분석하고 버전 문자열을 교체하고 생성합니다. 최종 출력.

이 시스템의 문제점은 VB 프로젝트가 AssemblyInfo 파일을 지속적으로로드하는 것처럼 보입니다. 즉, 사전 빌드 단계가 실행되기 전에 조립품을 만들기 전에도 프로젝트가 오류가 발생할 때 프로젝트가 오류가 발생 함을 의미합니다. 우리는 아직 그 문제에 대한 해결책을 찾지 못했습니다. 누군가 통찰력이 있다면 듣고 싶습니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top