2012-09-10 3 views
4

에서 확인 난 단지 Major.Minor.Build 버전의 일치에 사용한다는 This Assembly Versioning Article을 발견했다. 나는 이것을 확인/거부 할 수있는 것을 찾을 수 없다.조립 버전은 내가 완전히 .NET</p> <p>에서 조립 버전과 강력한 이름의 주위에 내 머리를 얻으려고 노력하고 있어요 닷넷

는 총회 버전 형식 ... 수정 : 같은 이름을 가진
어셈블리, 주 및 부 버전 번호 만 다른 버전은 완전히 교환 할 을위한 것입니다. 이전에 릴리스 된 어셈블리에 보안 구멍을 수정하는 것이 적절합니다.

MS Articles 말 같은 것들 :

조립 버전 번호가 어셈블리의 정체성의 일부이며 버전은 확인 ... 어셈블리와 버전 정책에 바인딩에서 핵심적인 역할을 강한 발생 이름이 붙여진 어셈블리.

강력한 이름 환경에서는 1.0.0.0과 1.0.0.1을 바꿔 쓸 수 있지만 1.0.1.1은 그렇지 않습니까?

확실한 답변은 무엇입니까?

답변

2

링크 된 기사에서 Major.Minor.Build 만 버전 일치에 사용되었다는 사실을 발견하지 못했습니다. 사실 버전의 네 가지 구성 요소가 모두 사용됩니다.

핵심 사항은 intended to be interchangeable입니다. 이 실제로인지는 MS 지침을 존중하거나 무시할 자유로운 저자에 따라 다릅니다.

GAC에 설치된 공유 어셈블리의 공급 업체가 어셈블리의 이전 버전에서 새 버전으로 리디렉션하는 게시자 정책 파일을 제공 할 수 있습니다. 새 버전이 이전 버전과 역 호환되는 경우에만이 작업을 수행해야합니다.

+0

감사합니다. 나는 "진술했다." * 인용 된 부분이 정확히 영향을 미쳤다는 것을 해석하는 방법을 알지 못했다고 명시해야했습니다. – Tyst

3

버전을 비교할 때 어셈블리의 -attribute가 완전히 평가되고 있습니다. 버전 번호의 일부를 변경하면 일치하지 않는 어셈블리가 생성된다는 것을 의미합니다.

이 문제를 해결하는 한 가지 방법은 AssemblyVersion - 속성을 항상 변경하지 않고 [AssemblyVersion("1.2.3.0")]으로 설정하고 AssemblyFileVersion 속성을 사용하여 버전 등의 버전을 변경하는 것입니다. [AssemblyFileVersion("1.2.3.20120909")]. 그러면 모든 참조를 업데이트하지 않고 강력하게 명명 된 어셈블리의 버전을 업데이트 할 수 있습니다.

+1

"이 문제를 해결하는 한 가지 방법은 AssemblyVersion 속성을 항상 변경하지 않는 것입니다."- 항상 바람직한 것은 아닙니다. 예를 들어 AssemblyVersion이 변경된 경우에만 어셈블리 다운로드 캐시가 업데이트됩니다. – Joe