2017-02-01 1 views
1

프로젝트를 빌드하는 MSBUILD 스크립트 (.bat 파일)가 있습니다. 빌드 관리 및 연속 통합 서버와 일치하는 특정 버전의 MSBuild에서 실행되도록 로컬로 (repo에 커밋하기 전에) 실행될 MSBuild 스크립트가 필요합니다.강제로 MSBuild 버전을 적용 하시겠습니까?

msbuild MyProject.HelloWorld.proj 
:

C:\Program Files (x86)\MSBuild\14.0

C:\Windows\Microsoft.NET\Framework\v3.5

C:\Windows\Microsoft.NET\Framework\v4.0.30319

그래서 로컬 상자에 그들은 내 빌드 스크립트를 실행 문제는 모든 로컬 개발자 상자가 현재 설치되어 있다는 것입니다

문제는 MSBuild 버전은 Windows 경로 환경 변수에서 가장 높게 나열됩니다.

빌드 로그에서 사용 된 MSBuild 버전을 확인할 수 있습니다.

은 내가 Toolsversion 매개 변수를 전달하는 스크립트를 수정하여 tools version를 지정 시도 :
msbuild /toolsversion:14.0 MyProject.HelloWorld.proj 

하지만이 프로젝트는 MSBuild를 버전 4.0로 지어진 아무 소용이

.

모든 개발자에게 환경 경로 변수의 순서를 수정하고 최상위에 C : \ Program Files (x86) \ MSBuild \ 14.0을 배치하여 MSBuild 14로 빌드하도록 요청할 수는 있지만 그 일을 성취하기 위해 덜 눈에 띄는 방식을 찾고있었습니다.

또한 이전 버전의 MSBuild로 빌드해야하는 다른 프로젝트가 있으므로 프로젝트에 따라 피하려고하는 경로 변수의 순서를 이동해야 할 수도 있습니다.

+0

단순히 전체 경로를 사용합니다. 보다 나은 로직을 사용하고 싶다면 MSBuild는 더 많은 버전 관련 정보를 구성 할 수있는 자체 레지스트리 키를 가지고 있습니다. –

+1

msbuild.exe 버전은 PATH에 없습니다. devs가 자신의 목적을 달성 할 수 없도록 만들거나 개발자 명령 프롬프트를 잘못 사용하는 것을 막을 수있는 방법은 거의 없으며 .bat 파일 인 경우 개발자에게 제공하는 것이 좋습니다. –

+0

@LexLi 좋은 생각. 응답으로 제출해주십시오. 내가받는 다른 대답에 따라 답으로 표시 할 수 있습니다. – ConfusedDeer

답변

2

변경하여 '박쥐'스크립트는 특정 MSBuild.exe를 호출합니다 : 그들은 기계에서 동일로

"C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe" MyProject.HelloWorld.proj 
관련 문제