2014-01-30 65 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