2014-01-30 4 views
0

msysgit bash 프롬프트에서 msbuild를 실행할 때 경로에있는 명령이있는 대상에 대해 9009 오류가 발생했습니다. 실패한 대상에 echo $(Path)의 실행을 추가하면 msbuild가 더 이상 경로를 해석 할 수 없음이 분명해집니다. MSBuild에서이 msysgit bash 쉘에서 실행되기 때문에msysgit 및 msbuild 경로가 일치하지 않습니다.

, 그것은 떠들썩한 파티 스타일 $PATH 변수 (예를 들어, /c/Directory1:/c/Directory2)이 있지만, 값을 해석하려고하고있는 것 같다 DOS 스타일로 %PATH% (예를 들어, c:\Directory1;c:\Directory2) . 분명히, 그것은 실패합니다.

이 문제를 해결하는 우아한 방법이 있습니까? 나는 경로를 변환하고 -p:Path="..."으로 주입 할 수있는 별칭을 만들 수 있다고 생각하지만, 내가 착수하기 전에 더 깨끗한 방법이 있는지 물어볼 가치가 있다고 생각했습니다.

답변

0

더 쉬운 대답이 있습니다 : ~을 사용하는 경로에는 아무 것도 없으므로 msbuild는 sh 스타일 경로로 잘합니다.


경로의 munging를 제외하고도 추악한하지 않은 경로 수정 달성 스크립트 :

#/bin/sh 
dospath=`echo ${PATH} | 
    sed "s-\(^\|:\)~\([/:]\|$\)-\1${HOME}\2-g" | 
    sed 's-:-;-g' | 
    sed 's-\(^\|;\)/\([A-Za-z]\)\([/;]\|$\)-\1\2:\3-g' | 
    sed 's-/-\\\\-g'` 
msbuild=`which msbuild.exe` 
whichresult=$? 
if [ ${whichresult} -eq 0 ]; then 
    PATH=${dospath} 
    ${msbuild} [email protected] 
else 
    echo 'msbuild.exe not found' 
    exit ${whichresult} 
fi 
관련 문제