2016-10-24 4 views
0

VSTS를 통해 클라우드에서 빌드를 수행하고 있습니다. 이 경우 내가 클릭 한 번 응용 프로그램을 제작 및 제공하고 MSBuild를 인수 :Visual Studio Team Services 내에서 MSBuild에 버전 정보를 전달하는 방법

/target:publish 
/property:PublishUrl=http://somurl.com/somepath/myapp.application 
/property:ApplicationVersion="1.$(Year:yyyy).0.0" 

정말 마지막이 될 것을 원하는 :

/property:ApplicationVersion="1.$(Year:yyyy).$(DayOfYear).$(Build.BuildNumber)" 

그러나 하드 코딩 된 문자열 아무것도하지만 나를 준다 :

C : \의 Program Files (x86) \ MSBuild에서 14.0 \ 빈 \의 Microsoft.Common.CurrentVersion.targets (3506,5) \ : 오류 MSB3174 : 'AssemblyVersion'에 대한 값이 잘못되었습니다.

하드 코딩 된 버전 번호 (예 : "1.0.9.99")를 사용하면 정상적으로 작동합니다.

+0

$ (Build.BuildNumber)가 실패 할 것으로 추측합니다. 참고 :이 값에는 공백 또는 다른 유효하지 않은 레이블 문자가 포함될 수 있습니다. 이러한 경우 레이블 형식이 실패합니다. – Daniel

+0

로그를 보면 MSBuild 명령 줄에서 변수가 실제 값으로 바뀌 었음을 알 수 있습니다. 이는 잘못된 점에 대한 힌트를 줄 수 있습니다. – DaveShaw

+0

DaveShaw가 말했듯이, 실제 생성되는 것을 보는 것은 매우 도움이 될 것입니다. 그러나 내가 추측해야한다면, $ (Build.BuildNumber)가 $ (Rev : .r)이되었습니다. –

답변

2

누구에게도 제 질문에 대해 감사드립니다. 다른 사람들에게 도움이 될 수 있도록 도움을 줄 수있는 솔루션을 제공해주었습니다.

빌드 번호 형식을 설정할 때 here으로 정의 된 토큰은 분명히 $ (Build.BuildNumber)를 전달하여 빌드 작업 인수에 사용될 수 있습니다. 다른 토큰은 $ (Rev : r)과 같은 태스크 인수로 사용될 수 있지만 $ (Year : yyyy) 및 $ (DayOfYear)와 같은 다른 토큰은 태스크 인수로 사용할 수 없습니다 (빌드를 설정하는 데 사용할 수 있음) 숫자 형식).

내 빌드 번호 형식을 유효한 어셈블리 버전 번호 (이전에는 없었 음)로 변경하면서 $ (Rev : r)을 전달하지 않았습니다.

1.$(Date:yyyy).$(Date:MMdd).$(Rev:r) 

지금 내가하고 꿀꺽 스크립트에 인수로의 MSBuild를 호출하는 것을 꿀꺽 스크립트를 사용하는 것이 합격 : 나는 그것을 변경했습니다. 내가 msbuild를 직접 호출 할 수 있었기 때문에 조금 복잡했지만 다른 것들을 위해 꿀꺽 꿀꺽 삼키는 것을 사용하고 있었고 다른 방법으로는 msbuild 태스크에 대한 인수를 하드 코딩해야했기 때문에 꿀꺽 꿀꺽으로 유지하도록 선택한 다른 구성이 있습니다.

그러나 gulp를 사용하여 msbuild를 호출하면 msbuild의 경로를 알아야합니다. msbuild 작업을 테스트하면 전체 경로가 무엇인지 알 수 있었으므로 환경에 맞게 구성에 추가 할 수있었습니다 (자세한 내용은 해당 학습에 대한 자세한 내용을 보려면 npm config 참조).

0

먼저 빌드 정의 옵션에서 설정 한 빌드 번호 형식이 W.X.Y.Z와 같이 허용되는 형식인지 확인해야합니다.

다음, 당신은 당신의 msbuild를 인수 빌드 번호를 전달할 수 있습니다

/property:ApplicationVersion="$(Build.BuildNumber)"

당신이 따옴표 사이에 변수 이름을 추가해야합니다, 그렇지 않으면 당신은 동일한 오류가 계속됩니다 당신이 받고있는 메시지.

관련 문제