在Bamboo中使用PowerShell安装NuGet包失败求助
解决Bamboo中PowerShell脚本执行NuGet安装失败问题
问题背景
我尝试通过以下PowerShell脚本安装NuGet包:
$buildUtilsVersion = "0.1.1-feature-hfp-xxxxxxxx" $buildUtilsPackageName = "scripts.deploy" Invoke-Expression -Command ".\src\Nuget.exe install $buildUtilsPackageName -version $buildUtilsVersion -OutputDirectory .\deploy\application\content\lib -configFile .\src\Nuget.config"
该脚本在本地PowerShell中运行正常,但在Bamboo中执行时出现如下错误:
ResourceUnavailable: Program 'nuget.exe' failed to run: No such file or directory At line:1 char:1
.\src\nuget.exe install scripts.deploy -version 0.1.1-f …
解决方法
1. 改用绝对路径定位nuget.exe
Bamboo执行任务的工作目录可能和本地不一致,相对路径无法正确找到文件。可以通过脚本所在目录拼接绝对路径:
$nugetPath = Join-Path -Path $PSScriptRoot -ChildPath "src\Nuget.exe" $buildUtilsVersion = "0.1.1-feature-hfp-xxxxxxxx" $buildUtilsPackageName = "scripts.deploy" Invoke-Expression -Command "& `"$nugetPath`" install $buildUtilsPackageName -version $buildUtilsVersion -OutputDirectory .\deploy\application\content\lib -configFile .\src\Nuget.config"
也可以直接指定Bamboo代理工作目录下的绝对路径,比如:
$nugetPath = "C:\bamboo-agent\work\your-project-key\src\Nuget.exe"
2. 排查Bamboo工作目录与文件存在性
在脚本开头添加以下命令,确认当前工作目录和nuget.exe是否存在:
Write-Host "Current working directory: $PWD" Write-Host "Nuget.exe exists at target path? $(Test-Path .\src\Nuget.exe)"
如果Test-Path返回False,说明文件未同步到Bamboo代理的工作目录,需要调整路径或确保文件被纳入代码仓库。
3. 使用全局NuGet CLI工具替代本地exe
如果Bamboo代理已安装.NET SDK,可直接使用全局NuGet工具,无需依赖本地exe:
$buildUtilsVersion = "0.1.1-feature-hfp-xxxxxxxx" $buildUtilsPackageName = "scripts.deploy" nuget install $buildUtilsPackageName -version $buildUtilsVersion -OutputDirectory .\deploy\application\content\lib -configFile .\src\Nuget.config
若未安装全局工具,可先执行安装命令:
dotnet tool install --global NuGet.CommandLine
4. 确保nuget.exe被纳入版本控制
检查Git仓库是否包含src\Nuget.exe文件,若未包含,需将其添加到仓库并提交,确保Bamboo拉取代码时能获取到该文件。
内容的提问来源于stack exchange,提问作者Pramod Shivaprasad
相关产品推荐
相关产品推荐

