【问题标题】:msysgit and msbuild path disagreementmsysgit 和 msbuild 路径不一致
【发布时间】:2014-01-30 21:11:08
【问题描述】:

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

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

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

【问题讨论】:

    标签: bash msbuild msysgit


    【解决方案1】:

    原来有一个更简单的答案:只是在使用~ 的路径中没有任何东西,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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 2016-10-22
      • 2023-03-13
      相关资源
      最近更新 更多