如何指定与 Azure DevOps 中的自托管代理一起使用哪个版本的 nuget.exe?

问题描述 投票:0回答:2

我正在运行自托管代理,并且

NuGetToolInstaller
总是抛出错误
ERR:unable to get local issuer certificate

我找到了一个修复技巧here。只需将所需的

nuget.exe
版本下载到机器上,将其添加到环境变量中并完全删除
NuGetToolInstaller
即可。它解决了问题,但今天我明白事实并非如此。

目前,我有

nuget.exe version 5.6.0
,所以我认为自托管代理使用它,但是......

运行时

Initialize Job
Azure 下载 NuGetCommand

enter image description here

我找到了位置,可以看到它下载了三个不同版本的

nuget.exe

enter image description here

并且它始终对任何 NuGetCommand 使用

4.1.0

enter image description here

如何在没有

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)'
azure-devops nuget azure-pipelines nuget-package
2个回答
2
投票

从管道日志来看,nuget任务默认使用v4.1:

enter image description here

如果您不想使用

NuGetToolInstaller
任务,一种解决方法是将 nuget.exe 替换为您想要在
{agent work folder}\_tool\NuGet\4.1.0\x64
文件夹中使用的版本。


0
投票

基于 Hap Disney 的 解决方案
您应该在代理的根文件夹中创建一个

.env
文件(
.agent
.service
文件也位于其中)。

您的

.env
文件内容示例:
NugetExeToolPath=C:\Utils\nuget\nuget.exe

您应该将此路径添加到系统 PATH 环境变量中,这样下次当您要更新 nuget.exe 时,只需在 PowerShell/CMD 中运行以下命令:

nuget update -self

当然,保存

.env
文件后,您必须重新启动代理服务。

© www.soinside.com 2019 - 2024. All rights reserved.