我正在尝试使用Cake作为构建工具,但我们在其PowerShell脚本中遇到了一个问题。
脚本正在尝试在环境变量路径中查找nuget.exe
。如果它不存在,则下载它。
问题是始终会返回msbuild.exe
,如果nuget.exe
不存在,则脚本会在尝试msbuild.exe
$existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_) }
$NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1
无论哪个exe
我尝试使用此脚本进行搜索即使存在,也会在列表中返回msbuild.exe
。
答案 0 :(得分:3)
我会对 nuget.exe 可用性
使用不同且可能更有效的检查if (!(Get-Command nuget.exe -ErrorAction 0)) {
# nuget.exe is not found, download ...
}
正如Enrico Campidoglio建议的那样,您可以添加-CommandType Application
。从理论上讲,它应该更有效率。在(我的)练习中,情况并非总是如此。