我正在尝试使用Exec任务调用在MSBuild过程中获得的批处理脚本。然而,脚本的位置不是系统环境变量路径的一部分。所以我想我可以在目标中更新Path属性,然后触发Exec任务:
<Target Name="RestoreNPMPackages">
<Message Text="$([System.DateTime]::Now.ToString("yyyy-MM-dd hh.mm.ss.fff")) Entering Build.xml Target RestoreNPMPackages..." Importance="high" />
<PropertyGroup>
<Path>$(Path);$(WorkspaceRoot)\Tools\$(Node_jsPackage)</Path>
</PropertyGroup>
<Message Text="Property Path in RestoreNPMPackages=$(Path)" Importance="high" />
<Exec Command="$(Path)\npm install --no-color --no-optional" />
<Message Text="$([System.DateTime]::Now.ToString("yyyy-MM-dd hh.mm.ss.fff")) Exiting Build.xml Target RestoreNPMPackages..." Importance="high" />
然而,我遇到了以下错误:
RestoreNPMPackages: 2015-07-27 06.31.24.334 进入 Build.xml 目标 RestoreNPMPackages... 属性路径在 RestoreNPMPackages=d:\Delphi Projects\Libraries;C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\PROGRA~1\Borland\Delphi5\Projects\Bpl;C:\PROGRA~1\Borland\vbroker\jre\Bin;C:\PROGRA~1\Borland\vbroker\Bin;C:\PROGRA~1\Borland\Delphi5\Bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\GNU\GnuPG;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\RealTick\;C:\Program Files (x86)\Graphviz 2.28\bin;D:\PLATFORM\Tools\Eze.Thirdparty.Node.js npm install --no-color --no-optional 'npm' 不是内部或外部命令,也不是可运行的程序或批处理文件。
从 Message 任务中可以看到,文件夹 D:\PLATFORM\Tools\Eze.Thirdparty.Node.js 已经被添加到 Path 变量中,但由于某种原因它抱怨 'npm' 不是内部或外部命令。
如果我在 Windows 中将文件夹 D:\PLATFORM\Tools\Eze.Thirdparty.Node.js 添加到 Path 变量中而不是在 MSBuild 脚本中,该命令将无错误地工作。当然,提前设置 Path 变量并不太灵活。
如何使 MSBuild Exec 任务中的实时更新 Path 变量工作?谢谢。
PATH
包含')',会不会导致括号不平衡?(“传统”的PATH
包括“Program Files(x86)”) - Shmil The Cat