2010-01-17 3 views
10

Gendarme는 다음의 기술에 AvoidAssemblyVersionMismatchRule 있습니다AssemblyVersion과 AssemblyFileVersion을 일치시키는 데는 충분한 이유가 있습니까?

이 규칙은 두 어셈블리 안에 존재할 때 [AssemblyVersion][AssemblyFileVersion]가 일치하는지 확인한다. 응용 프로그램이 배포되면 두 속성에 서로 다른 버전 번호를 사용하는 것이 혼란 스러울 수 있습니다.

예를 들어,이 규칙은 다음과 같은 특성을 가지고있는 마이크로 소프트의 System.dll에 경고 것 :

[assembly: AssemblyVersion("2.0.0.0")] 
[assembly: AssemblyFileVersion("2.0.50727.3053")] 

나는 헌병의 규칙에 동의하지 않는다. 그것이 불가능하면 Microsoft에서 사용하는 것과 유사한 버전 방식을 사용할 수 있도록 할 다음, 그 모든 빌드에

  • 갱신 AssemblyFileVersion 만 공용 인터페이스 또는 기타 주요 변경 사항에
  • 변화 AssemblyVersion,
  • 입니다
  • 만들 AssemblyVersionAssemblyFileVersion주 공통 접두사,

과 내가이 버전 방식이가에 가능하게 한 이유 설계 이유를 생각해야 처음에는 AssemblyVersionAssemblyFileVersion을 구별합니다.

두 어셈블리 속성을 같게하는 것이 좋은 방법이지만 왜 그렇게 할 수 있는지 이유는 생각해 낼 수 없습니다! 나는 당신의 의견에 관심이 있습니다.

참으로 좋은 이유가없는 경우, 곧

이 규칙에 규칙을 변경하려면 헌병 개발자를 제안합니다은 [AssemblyVersion][AssemblyFileVersion]공통, 비어 있지 않은 접두사가 있음을 확인 때 둘 다 어셈블리 안에 있습니다.

+1

의견 == 커뮤니티 위키 –

답변

9

동의하면 일치해야하는 경우 두 가지 속성이 필요하지 않습니다. 그러나 규칙에 의하면 : 그것은 혼란 스러울 수 있습니다.

AssemblyVersion은 "전체 응용 프로그램의 버전"과 비슷하지만 FileVersion은 개별 파일의 버전입니다. 응용 프로그램에 업데이트주기가 다른 여러 어셈블리가있는 경우 (예 : 별도로 업데이트되지만 주 응용 프로그램의 특정 주요 릴리스가 필요한 플러그인), 각기 다른 FileVersion을 제공 할 수 있지만 공통 AssemblyVersion을 가질 수 있습니다.

또한 때때로 AssemblyVersion을 업데이트하는 것이 불편합니다 (예 : SharePoint Workflow 및 웹 파트가 지정된 AssemblyVersion을 예상하기 때문에 PITA로 업데이트 됨). 따라서 FileVersion이 실제 버전으로 자주 사용됩니다.

+1

두 번째 의견 - 파일 버전은 여러 빌드에서 매우 유용하지만 공개 릴리스 사이에 있습니다. 일반적으로 공개 버전간에 어셈블리 버전을 두 번 이상 변경할 수는 없지만 테스트 부서는 특정 DLL을 빌드하는 방법을 결정하는 방법 중 하나 일뿐입니다. 설명적인 로그를 작성할 수 있습니다. 이 경우 보고서를 발행하십시오. (이상적으로) 모든 빌드 (릴리스 용 준비)는 동일한 어셈블리 버전을 공유하므로 파일 버전이이를 차별화하는 데 적합한 도구입니다. – Adam

4

동의합니다. 이것은 바보 같은 규칙입니다. 강력한 명명 된 어셈블리를 팔로우하면 드롭 인 버그 수정 업데이트를 배포 할 수 없습니다. 그렇지 않으면 실제로 [AssemblyVersion]을 변경해야하는 경우에는 동일하게하지 않는 이유가 거의 없습니다. 어쩌면 버그 수정시 해당 도구를 사용하지 않아도됩니다. 아이러니 컬.

0

.NET Framework에서는 기본적으로 동일한 AssemblyVersion을 사용하는 두 어셈블리를 서로 바꿔 사용할 수 있으므로이 시나리오는 많은 시나리오에서 의미가 있다고 생각합니다.

예를 들어, 이전 버전이 다운로드 캐시에 있으면 AssemblyFileVersion에서만 다른 새 버전으로 자동 덮어 쓰지 않습니다.

이것은 평균 개발자, 따라서 규칙에 혼동을 줄 수 있습니다.

물론 당신이하고있는 일을 알고 트레이드 오프를 이해한다면이 규칙을 무시할 수 있습니다.

관련 문제