2014-01-30 63 views
0

当从msysgit bash提示符执行msbuild时,我已经遇到了一些9009错误,其中包含路径中的命令。通过将echo $(Path)的执行添加到失败的目标,很明显msbuild无法再解释路径。msysgit和msbuild路径分歧

由于MSBuild的是从msysgit bash shell的推出,它有一个bash风格$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