문제

다가오는 프로젝트를위한 매일 빌드를 구현하기를 기대합니다.

그러나 그렇게하기 전에 어셈블리를 올바르게 버전하는 방법을 알아야합니다.

다음과 같은 우려 사항이 있습니다.

  • 각 어셈블에는 독립 버전 번호가 있어야합니까, 아니면 모두 동일한 버전을 공유해야합니까?
  • 빌드 및 개정에 * 버전을 사용해야합니까?
  • 개정은 매일 빌드와 관련이 있습니까?
도움이 되었습니까?

해결책

우리는 다음 단계를 사용하여 제품 내의 모든 어셈블리를 동일한 버전 번호로 스탬프합니다.

  • 버전 번호 정보가 포함 된 AssemblyInfocommon.cs에 모든 어셈블리를 연결합니다. 여기예를 들어.

  • Nant Asminfo Task, Cruise Control .NET 및 SVN 개정 Labeller를 사용하여 빌드의 일부로 AssemblyInfocommon.cs 파일을 생성하십시오.

우리의 경우, 우리는 * 버전을 사용하지 않습니다. 모든 배포 된 버전은 빌드 서버에 구축됩니다. 데스크탑의 버전 번호에 대해 걱정하지 않습니다.

다른 팁

답은 실제로 어셈블리 버전 번호로 달성하려는 것에 달려 있습니다. ClickOnce 배포를하고 업데이트 된 어셈블리의 독립적 인 다운로드를하려면 각 어셈블리가 독립적으로 버전을 가져와야합니다. 그렇지 않으면 어셈블리 버전이 소프트웨어 릴리스 번호와 일치하는 것이 좋습니다. 보다 복잡한 시나리오에서는 다른 전략이 필요할 수 있습니다.

이전 회사에서 사용한 계획은 Major.minor.revision.build- 제품의 버전 1.0에서 각 어셈블리의 어셈블리 버전 및 어셈블리 파일 버전은 1.0.0.1129 (예를 들어)입니다. 이로 인해 어셈블리가 어떤 소프트웨어 릴리스의 일부인 어셈블리를 빌드 번호로 쉽게 일치시킬 수있었습니다. 우리는 사전 컴파일 검색을 사용하여이를 달성하고 각 AssemblyInfo.cs 파일에서 교체하여 토큰을 자동화 된 빌드 프로세스에서 제공 한 버전 번호로 바꾸십시오.

따라서 각 어셈블리에는 일반적으로 릴리스 버전의 조합 인 동일한 버전이 있어야합니다. 즉, 빌드 번호는 빌드 서버에서 릴리스 된 릴리스 수를 나타내는 시퀀스입니다. 개정은 해당 릴리스를 위해 만든 빌드 수를 보여주기 때문에 관련이 있습니다. 당신은 실제로 두 가지 방법 중 하나로 이것을 할 수 있습니다. 첫 번째 방법은 릴리스 IE 3.4를 계획하면 해당 릴리스 작업을 시작할 때 주요 버전 번호와 빌드와 함께 사소한 버전 번호가 증가하는 것입니다. 이를 수행하는 또 다른 방법은 QA / 회귀 릴리스를 수행 할 준비가되었을 때 주요 버전을 3.4로 설정하고 미성년 버전 번호를 0으로 남겨 두는 것입니다. 당신이 석방 될 때까지. 이렇게하면 사소한 버전 번호를 통해 서비스 팩 번호를 제어 할 수 있습니다. 도움이 되었기를 바랍니다.

나는 일반적으로 모든 어셈블리가 동일한 버전 번호를 가져야한다는 데 동의합니다. 그러나 나는 그것에 대해 한 가지 경고를 만들 것입니다. 어셈블리 중 하나 가이 프로젝트 이외의 다른 곳에서 사용되거나 자체 프로젝트로 간주되는 경우 자체 버전 번호가 있어야합니다. 또한 아마도 그 솔루션에서 나 자신의 솔루션으로 옮겨야 할 것입니다. 내가 이것을 언급 한 유일한 이유는 사람들이 다른 두 곳에서 사용되는 조립품을 가지고 있지만 주로 한 곳에서 버전을 똑바로 유지하려고하는 수많은 경우를 보았 기 때문입니다. 그렇게하는 것은 나쁜 생각입니다. 단일 책임 원칙은 솔루션/프로젝트 수준에서도 적용된다고 생각합니다.

번호가 매겨지는 한 Guy Starbuck (major.minor.revision.build)에 동의합니다. 그것이 내가 항상 한 방식이며 항상 잘 작동했습니다.

우리는 자주 릴리스 (한 달에 약 1)가있는 큰 앱 (수백 개의 어셈블리)을 가지고 있습니다. 우리는 "모든 어셈블리를 동일한 버전으로 제공"했지만, 1 버전에 대한 어셈블리가 다른 사람들과 완전히 호환되지 않는다는 사실에 대한 끊임없는 멍청한 소스입니다.

이 경우 버전 작성 어셈블리의 혜택을 별도로 혜택을 볼 수 있습니다. 어셈블리를 업데이트 할 때마다 실제로 어셈블리 바인딩을 중단하려는 경우 (예 : 인터페이스가 변경되거나 변경 사항이 변경되는 경우가있는 경우에만 버전 번호를 증가시킬 수 있습니다. 그렇지 않으면 누군가가 실수로 이전 버전을 사용하지 못하게하려는 중요한 enoigh).

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