msysgit和msbuild路径不一致

时间:2014-01-30 21:11:09

标签: bash msbuild msysgit

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

由于msbuild是从msysgit bash shell启动的,因此它有一个bash样式的$PATH变量(例如/c/Directory1:/c/Directory2),但似乎它试图将该值解释为DOS- style %PATH%(例如c:\Directory1;c:\Directory2)。显然,这失败了。

有没有一种优雅的方法来纠正这种行为?我想我可以创建一个别名来转换路径并将其注入-p:Path="...",但我认为在开始之前我是否应该采用更清洁的方式。

1 个答案:

答案 0 :(得分:0)

原来有一个更简单的答案:使用~只是在路径中没有任何东西,并且msbuild在sh风格的路径上做得很好。


完成路径修复的脚本不是太难看,除了修改路径:

#/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} $@
else
    echo 'msbuild.exe not found'
    exit ${whichresult}
fi