이 주제에 대해 몇 가지 조사를 해본 결과 사용자 정의 빌드 번호뿐만 아니라 패치 어셈블리 정보도 생성 할 수있는 개별 솔루션을 찾을 수 있었지만 두 가지를 모두 수행 할 수는 없습니다. 검색에서 찾은 사용자 정의 POWERSHELL 스크립트를 사용할 때 빌드 번호가 패치로 작성되지 않지만 스크립트로 작성한 번호로 빌드 번호를 설정할 수 있습니다. 패치 할 때 유일한 성공은 세트 번호와 카운터를 사용할 때입니다. 그러나 POWERSHELL 스크립트가 생성하는 번호는 어셈블리 패치 담당자가 작업 할 수있는 정도까지 유지되지 않습니다. 내가 잘못하고 있니?TeamCity에서 사용자 정의 빌드 번호를 생성 한 다음 어셈블리 정보에 패치를 적용하려면 어떻게해야합니까?
2
A
답변
3
마침내 Chaitanya의 제공 논리의 약간 그것을 해결 ...하지만 수정 :
이$ww = ([Math]::Floor([DateTime]::Now.DayOfYear/7)+1)
Write-Host "##teamcity[buildNumber '%major.minor%.$ww.%build.counter%']"
$fileLocation = Join-Path -Path "%teamcity.build.checkoutDir%" -ChildPath "\SourceDir\AssemblyInfo.cs"
$oldValue = "AssemblyFileVersion\(""(\d+)\.\d+\.\d+\.\d+""\)"
$newValue = [string]::Concat("AssemblyFileVersion(""%major.minor%.", $ww, ".%build.counter%", """)")
(get-content $fileLocation) | foreach-object {$_ -replace $oldValue, $newValue} | set-content $fileLocation
1
우리 프로젝트에서는 CommonAssemblyInfo.cs 파일을 사용하여 해결했습니다. 기본적으로 솔루션에 추가하고 개별 파일에서 AssemblyInfo.cs 파일을 제거하면 모든 dll을 컴파일 할 때 CommonAssemblyInfo.cs 파일에 지정된 어셈블리 정보가 있습니다.
컴파일하기 전에이 파일을 첫 번째 단계로 업데이트합니다. 우리가 사용하는 고유 번호는 소스 제어 시스템 (이 경우에는 TFS)의 변경 집합 ID입니다. 기본적으로 소스 제어 변경 세트 번호는 고유하고 관련성이 높습니다. 소스 컨트롤에서 어떤 변경 집합으로 생성 된 어셈블리인지 정확하게 알려줍니다.
는 기본적으로 우리의 빌드 구성의 첫 번째 단계는 (그에 따라 CommonAssemblyInfo.cs에 업데이트 경로) 다음과 같은 형태 PowerShell 스크립트
$fileLocation = Join-Path -Path "%teamcity.build.checkoutDir%" -ChildPath "Source\CommonAssemblyInfo.cs"
$oldValue = "AssemblyVersion\(""(\d+)\.\d+\.\d+\.\d+""\)"
$newValue = 'AssemblyVersion("$1.0.0.%build.vcs.number%")'
(get-content $fileLocation) | foreach-object {$_ -replace $oldValue, $newValue} | set-content $fileLocation
그래서, SETP 1 빌드 변경 집합 번호와 어셈블리의 버전을 업데이트입니다 위와 같이. 2 단계, 솔루션을 컴파일하십시오. X, 테스트, 배포에 3 단계 등 등
관련 문제
- 1. TeamCity에서 Subversion 빌드 번호를 어셈블리 버전에 통합하기
- 2. TeamCity에서 빌드 한 후 TFS에 어셈블리 체크인
- 3. Teamcity에서 빌드 번호를 어떻게 설정합니까?
- 4. mercurial에서 특정 파일에 역방향 패치를 적용하려면 어떻게해야합니까?
- 5. TeamCity에서 내 어셈블리 버전
- 6. C#을 사용하여 데이터베이스에 패치를 적용하려면 어떻게해야합니까?
- 7. 외국인 저장소에서 시각적으로 패치를 적용하려면 어떻게해야합니까?
- 8. MediaWiki에서 .php 파일에 대한 패치를 적용하려면 어떻게해야합니까?
- 9. 사용자 정의 소개 페이지에 스타일을 적용하려면 어떻게해야합니까?
- 10. TFS 빌드에서 사용자 정의 어셈블리 숨기기 빌드
- 11. TeamCity에서 특정 SVN 개정 번호를 얻는 방법
- 12. TeamCity에서 빌드 시간 그래프를 얻으려면 어떻게해야합니까?
- 13. TeamCity에서 빌드 종속성 설정
- 14. 빌드 중 T4 코드 생성, 사용자 지정 어셈블리 참조
- 15. TeamCity에서 지정된 파일의 빌드 버전 번호를 업데이트하는 방법은 무엇입니까?
- 16. TeamCity에서 빌드 배포
- 17. TeamCity에서 MSTest 빌드 단계의 일부로 dotCover 실행
- 18. jquery를 사용하여 사용자 정의 별칭 입력 마스크를 적용하려면 어떻게해야합니까?
- 19. 여러 data.frames가있는 사용자 정의 함수를 R에 입력으로 적용하려면 어떻게해야합니까?
- 20. 빌드 스크립트에서 Bamboo 빌드 번호를 어떻게 업데이트합니까?
- 21. 이전 트렁크 패치를 적용하지 않고 분기에 새 트렁크 패치를 적용하려면 어떻게해야합니까?
- 22. xtext의 사용자 정의 코드 생성
- 23. tfs 2010 빌드 정의 생성
- 24. 버튼을 문서 흐름의 다음 div에 적용하려면 어떻게해야합니까?
- 25. 사용자 정의 모양을 원으로 변형하거나 애니메이션을 적용하려면 어떻게해야합니까? CANVAS JS
- 26. 적용하려면 어떻게해야합니까?
- 27. Maven 빌드 사용자 정의
- 28. TeamCity에서 빌드 에이전트를 실행하는 사용자 ID를 어떻게 변경합니까?
- 29. 사용자 정의 빌드 방법
- 30. 배열에 사용자 지정 정렬을 적용하려면 어떻게해야합니까?
이 코드는 나를 매우 가까이 보인다. 어셈블리 빌드 번호를 성공적으로 변경하지만 최종 컴파일 된 EXE는 여전히 세부 사항에 1.0.0.0을 표시합니다. 그러나 teamcity 체크 아웃 폴더의 작업 디렉토리를 보면 assemblyinfo 파일이 올바르게 조정되었습니다. 그래서 이것은 여전히 지속되지 않는 또 다른 경우 인 것처럼 보입니다. – DrDoomPDX
명확히하기 위해 컴파일 단계 전에이 코드를 사용하고 있습니다. 그래서 왜 그것이 지속되지 않는지 나는 확신하지 못한다. 대조적으로, AssemblyInfo patcher를 시스템 카운터/빌드 번호와 함께 사용하면 잘된 것처럼 보입니다. 그 방법으로 가지고있는 유일한 문제는 내가 원하는 방식으로 빌드 번호를 사용자 정의 할 수 없다는 것입니다. – DrDoomPDX