当从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="..."
,但我认为在开始之前我是否应该采用更清洁的方式。
答案 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