2016-08-11 5 views
0

ClickOnce를 사용하여 배포 및 업데이트를 관리하는 경우 프로젝트의 최신 버전에 대한 URL/매니페스트를 적극적으로 쿼리 한 다음 현재 버전을 다음과 비교하도록 구성 할 수 있습니다. 이 작업을 통해 업데이트가 필요한지 여부를 결정할 수 있습니다. 누구든지 비교 루틴의 수치 제한이 무엇인지 알고 있습니까? 빌드를 자동화하는 프로세스가 있기 때문에 타임 스탬프를 버전의 4 개 구성 요소 (예 : 1.0.0.x; 기호가없는 숫자)로 가져갑니다. 그러나이 자리에 8 자리 숫자가 있다는 사실은 잠재적으로 비교 충돌을 일으킬 수 있다고 우려합니다. Microsoft는 예기치 않은 요구 사항을 충족시켜줍니다..NET : ClickOnce의 버전 문자열 번호 및 길이

누구나이 경험이 있습니까?

감사합니다.

+0

내부적으로 'System.Version'을 사용하여 값을 구문 분석하고 비교하므로 응용 프로그램이'int.MaxValue'로 제한되어있는 것처럼 보입니다. – vcsjones

답변

1

트레일을 걷자. 더 큰 숫자의 연결을 시작하면 결국 setup.exe이 최신 버전을 폴링 한 다음 "계속할 수 없습니다. 응용 프로그램이 잘못 포맷되어 있습니다. 응용 프로그램 공급 업체에 도움을 요청하십시오."

ClickOnce version fail

당신이 세부 사항을 보면 다음과 같은 말을 할 수있는 로그 볼 수 있습니다 : 당신이 구글 "fourPartVersionType"을 위해, 당신은 FourPartVersionType Simple Type에서 자신을 찾을 경우

+ The 'version' attribute is invalid - The value '1.0.0.161739' is invalid according to its datatype 'urn:schemas-microsoft-com:asm.v1:fourPartVersionType' - The Pattern constraint failed. 
+ The Pattern constraint failed. 

을 다음 일반 표현식을 제공합니다.

([0-9]{1,4}|[0-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\.([0-9]{1,4}|[0-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){3} 

기본적으로 각 구성 요소는 4 자리 또는 5 자리로 제한되며, essentiall y는 65536보다 크지 않습니다.

+0

그걸로 충분하지 않아? 솔직히 수시로 개정/부전이 증가하는 것에 반대하는 것은 무엇입니까? 65536 빌드가 충분합니다. – lokusking

+0

모든 커밋에 대해 증가하지 않는 경우 확실합니다. 그렇더라도 계속 증가하는 숫자를 유지할 수있는 지속성 방법이 필요합니다. 이를 수용 할 수 없다면 (이 상황과 같이 질문에 함축되어 있음) 타임 스탬프 (다음 자연스러운 것)를 사용할 수 있습니다. –