문제

C#로 작성된 VS2008 프로젝트가 여러 어셈블리와 함께 작성되었습니다. 다른 어셈블리 사이의 버전 번호를 관리하는 간단한 방법과 빌드 번호를 자동으로 증가시키고 각 어셈블리의 버전 번호에 저장하는 방법을 원합니다.

나는 이것이 대부분의 프로젝트에서 문제라고 생각합니다.

프로젝트 버전 리소스의 관리를 단순화 할 수있는 방법에 대한 제안이 있습니까?

도움이 되었습니까?

해결책

솔루션 수준에서 .CS 파일을 사용하여 다음 줄이 포함 된 솔루션의 모든 프로젝트에 의해 연결됩니다.

using System.Reflection;
[assembly : AssemblyVersion("1.2.3.*")]

그리고 반드시 제거하십시오 AssemblyFileVersion 프로젝트의 AssemblyInfo 파일의 속성.

다른 팁

솔루션에 파일을 넣고 "SolutionInfo.cs"라고 호출하십시오 (C#이 VB에서도 작동한다고 가정합니다). 이 부분에서 공통적으로 가지고있는 모든 속성. 시작합니다 AssemblyVersionAttribute.

그런 다음 각 프로젝트에서 링크 이를 통해 각 프로젝트에 기존 항목 추가를 선택하지만 추가를 클릭하지 않고 드롭 다운을 사용하여 링크로 추가하십시오.

다른 답변과 마찬가지로 솔루션 수준에 단일 어셈블리 인foglobal.cs 파일이 있습니다. 그런 다음 CruiseControl.net이 정의하는 CCNetLabel을 가져 오는 작은 응용 프로그램을 빌드 스크립트의 일부로 보유하고 있습니다 (및 DefaultLabeller를 사용하여 레이블을 생성) 및 전역 파일을 확인한 다음 버전 번호를 수정 한 다음 글로벌 파일을 다시 확인합니다. .

일부 프로젝트에는 여러 솔루션이 있으므로 글로벌 파일은 디렉토리 구조의 솔루션 수준보다 높을 정도로 충분히 높아서 필요한 모든 것이 아래에 있습니다.

그런 다음 배포 프로젝트 버전 번호를 업데이트합니다. 이들의 숫자는 vdproj 파일 내에서 찾을 수 있지만 Express 버전에서 찾을 수 있을지 확신 할 수 없습니다. 전체 전문가 상향 기능이라고 생각합니다. 일부 프로젝트에는 12 개의 배포 프로젝트가 있지만 vdproj 파일 자체에서 버전 번호를 외부화하는 쉬운 방법은 없습니다. (또는 거기 있습니까?)

그런 다음 빌드가 발생하므로 빌드의 모든 출력은 언제든지 MSI 또는 어셈블리에서 버전을 얻을 수 있으며 해당 출력을 빌드하는 데 사용 된 소스를 정확히 알고 있습니다.

using System.Reflection; [assembly : AssemblyVersion("1.2.3.*")]

이에 대한 의견은자가 생성 버전 번호주기입니다. 따라서 어제 빌드에 버전 1.2.3.x가 있도록 버전을 만들고자한다면 오늘 x <x a 빌드가 있습니다.

이 용도를 달성합니다

[assembly : AssemblyVersion("1.2.*")]

이렇게하면 XY의 조합이 어제보다 큰 경우 버전 1.2.xy를 얻을 수 있습니다. XY가 각각 날짜와 시간의 함수라고 생각합니다.

이 작업을 수행하기 위해 사용자 정의 MSBuild 작업을 작성할 수 있습니다. 살펴보십시오 이 접근법

AssemblyInfo.cs에서 별표를 사용할 수 있습니다.

// Version information
[assembly: AssemblyVersion( "1.0.*" )]

버전을 자동으로 증가시킵니다. 모든 어셈블리간에 하나의 숫자를 공유하려면 ... 확실하지 않지만 공유 파일에서 언급 된 속성을 사용합니다.

나는 svnversion을 사용했습니다 MSBuild 커뮤니티 작업 이런 일을하려면 지침을 따랐습니다. 여기 내가하는 방식은 여러 어셈블리에 걸쳐 있지는 않지만.

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