source

SVN 리비전 번호를 ASP와 동기화하려면 어떻게 해야 합니까?NET 웹사이트?

nicesource 2023. 4. 29. 09:28
반응형

SVN 리비전 번호를 ASP와 동기화하려면 어떻게 해야 합니까?NET 웹사이트?

스택 오버플로 아래쪽에 하위 버전 버전 번호가 있습니다.

svn 개정판: 679

이러한 자동 버전을 사용하고 싶습니다..NET Web Site/ApplicationWindows Forms, WPD는 다음과 같습니다.

어떻게 구현해야 합니까?

제프가 크루즈 컨트롤을 사용하는 것 같습니다.팟캐스트 스크립트를 통한 일부 리핑을 기반으로 한 NET.이는 소스 제어에서 프로덕션에 이르기까지 자동화된 배포 기능을 갖춘 것으로 보입니다.여기가 삽입이 일어나는 곳일까요?

자동화된 빌드를 위해 xUnit.net 에서 이 작업을 수행합니다.우리는 사용합니다.CruiseControl.net(TeamCity를 사용해 보고 있습니다.)지속적인 통합을 위해 실행되는 MSBuild 태스크는 자동으로 빌드 번호를 변경하므로 결과 빌드 ZIP 파일에는 적절한 버전의 DLL 및 EXE 세트가 포함됩니다.

MSBuild 파일에는 정규식 대체를 수행하는 DLL에 대한 UsingTask 참조가 포함되어 있습니다. (이 DLL은 MS-PL 라이센스에도 적용되므로 이 DLL을 사용할 수 있습니다.)

<작업 사용하기AssemblyFile="3rdParty\CodePlex.MSBuildTasks.dll"작업 이름="코드플렉스.MS 빌드 태스크.RegexReplace"/>

다음으로 CI 시스템에서 자동으로 제공하는 빌드 번호를 추출합니다.원하는 경우 소스 제어 공급자에게 소스 리비전 번호를 제공하도록 할 수도 있지만 CI 시스템의 빌드 #이 더 유용하다는 것을 알게 되었습니다. CI 빌드 번호로 통합 결과를 확인할 수 있을 뿐만 아니라 빌드에 포함된 변경 세트에 대한 링크도 제공하기 때문입니다.

<!-- 빌드 번호를 찾기 위한 계단식 시도 -->
<속성 그룹 조건="$(빌드 번호)" == ""><빌드 번호>$(빌드_NUMBER)</빌드 번호></속성 그룹><속성 그룹 조건="$(빌드 번호)" == ""><빌드 번호>$(ccnet 레이블)</빌드 번호></속성 그룹><속성 그룹 조건="$(빌드 번호)" == ""><빌드 번호>0</빌드 번호></속성 그룹>

(TeamCity의 BUILD_NUMBER, 다음으로 CC.net 의 ccnetlabel을 시도합니다. 둘 다 없으면 자동 빌드 스크립트를 수동으로 테스트할 수 있도록 기본값은 0입니다.)

다음으로 빌드 번호를 GlobalAssemblyInfo.cs 파일로 설정하여 모든 프로젝트에 연결하는 작업이 있습니다.

<대상 이름="버전 번호 설정">< 정규식 바꾸기패턴='어셈블리 버전\(\d+\.\d+\.\d+)\.\d+"\")"대체='AssemblyVersion("$1.$(빌드 번호))"'
Files='GlobalAssemblyInfo.cs 'dlls><Exec Command="attribute -r xunit.설치 프로그램\App.manifest"/></대상>

AssemblyVersion 특성을 찾고 a.b.c.d 버전 번호를 a.b.c로 바꿉니다.빌드 번호.보통 작성자 번호의 처음 세 부분은 고정되고 네 번째 부분은 0(즉, 현재는 1.0.2.0)인 상태로 소스를 트리에 체크인합니다.

빌드 프로세스에서 SetVersionNumber 작업이 빌드 작업보다 우선하는지 확인합니다.마지막으로 Zip 작업을 사용하여 빌드 결과를 압축하여 모든 자동 빌드에 대한 바이너리 기록을 확인합니다.

코드의 아무 곳에나 다음을 추가하면 됩니다.

$Id:$

예를 들어 @Jeff는 다음과 같이 했습니다.

<div id="svnrevision">svn revision: $Id:$</div>

서버를 체크인할 때 $Id:$를 현재 버전 번호로 대체했습니다.는 또한 이 참고 자료를 찾았습니다.

$Date:$, $Rev:$, $Rev:$Rev:$도 있습니다.$

를 사용하는 ASP.Net MVC(StackOverflow가 그러하듯이) 최신 SVN 버전을 자동으로 가져와서 표시하는 방법에 대한 3단계 가이드를 작성했습니다.가이드는 바로 이 질문에 대해 혼자 생각하면서 영감을 얻었습니다! :o)

@풍선 거북이를 사용하는 경우SVN, 패키지화된 SubWCRev 프로그램을 사용할 수 있습니다.작업 복사본을 쿼리하고 가장 높은 개정 번호만 알려줍니다.분명히 이것은 서버 측 문제에 대한 클라이언트 측 접근 방식인 것 같지만, 좋은 명령줄 프로그램이기 때문에 사용하기 위해 출력을 꽤 쉽게 캡처할 수 있어야 합니다.

$rev개별 파일에 대한 수정사항이므로 파일이 변경되지 않는 한 변경되지 않습니다.웹 페이지의 번호는 전체 프로젝트에 대한 svn 개정 번호입니다.이는 다른 사람들이 지적해 온 파일 수정사항과 다릅니다.

이 경우 CCNET이 프로젝트의 수정 번호를 가져와서 해당 번호로 웹 페이지의 일부를 다시 작성하는 것으로 가정합니다.모든 CI 솔루션은 CCNET 및 Teamcity를 사용하여 직접 설정할 수 있어야 합니다(웹 페이지가 아니라 배포/어셈블리 버전의 자동 버전).

이렇게 하려면 이를 지원하는 CI 솔루션을 사용하거나 빌드 프로세스(MSbuild/Nant)를 사용하여 해당 버전을 저장한 후 "배포"하기 전에 파일에 기록하십시오.

@Brad Wilson의 대답에 추가하기: "원하는 경우 소스 제어 공급자가 소스 개정 번호를 제공하도록 할 수도 있습니다."

하위 버전과 MSBuild를 연결하려면: MSBuild 커뮤니티 작업 프로젝트

언급URL : https://stackoverflow.com/questions/163/how-do-i-sync-the-svn-revision-number-with-my-asp-net-web-site

반응형