我正在运行自托管代理,并且
NuGetToolInstaller
总是抛出错误 ERR:unable to get local issuer certificate
。
我找到了一个修复技巧here。只需将所需的
nuget.exe
版本下载到机器上,将其添加到环境变量中并完全删除 NuGetToolInstaller
即可。它解决了问题,但今天我明白事实并非如此。
目前,我有
nuget.exe version 5.6.0
,所以我认为自托管代理使用它,但是......
运行时
Initialize Job
Azure 下载 NuGetCommand
我找到了位置,可以看到它下载了三个不同版本的
nuget.exe
并且它始终对任何 NuGetCommand 使用
4.1.0
。
如何在没有
NuGetToolInstaller
的情况下指定使用哪个版本的 NuGet?
或者如何使
Initialize Job
不下载任何nuget.exe
并仅使用系统中可用的那个?
为了测试,我删除了
yaml
中的所有内容,它看起来像这样:
trigger:
- master
pool:
name: somePool
jobs:
- job: someJob
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
基于 Hap Disney 的 解决方案:
您应该在代理的根文件夹中创建一个
.env
文件(.agent
和 .service
文件也位于其中)。
您的
.env
文件内容示例:NugetExeToolPath=C:\Utils\nuget\nuget.exe
您应该将此路径添加到系统 PATH 环境变量中,这样下次当您要更新 nuget.exe 时,只需在 PowerShell/CMD 中运行以下命令:
nuget update -self
当然,保存
.env
文件后,您必须重新启动代理服务。