代码之家  ›  专栏  ›  技术社区  ›  Rui Jarimba

在Azure DevOps上Nuget还原失败,并显示消息“无法加载源的服务索引”

  •  5
  • Rui Jarimba  · 技术社区  · 6 年前

    我有一个在私有代理中运行的.NET解决方案的生成。该解决方案包含.NET核心2.1和.NET标准2.0项目。

    安装的某些nuget包如下:

    • netstandard.library 2.0.3版
    • Microsoft.aspnetcore.mvc 2.0.0版
    • Microsoft.netcore.app 2.1.5版

    尝试还原nuget包时生成失败,错误如下:

    < Buff行情>

    “f:\agent01\w\141\s\xxxxx.sln”(还原目标)(1)-> (还原目标)-> C:\Program Files\DotNet\SDK\2.1.500\Nuget.Targets(114,5):Error:Unable to load the service index for source https://xxxxxxx.pkgs.VisualStudio.com/-packaging/xxxxxxx/nuget/v3/index.json.> C:\Program Files\dotnet\sdk\2.1.500\nuget.targets(114,5):错误:响应状态代码未指示成功:401(未经授权)。

    < /块引用>

    生成任务如下:

    这是生成代理中 %appdata%\nuget\nuget.config 文件的内容:

    <?xml version=“1.0”encoding=“utf-8”?gt;
    <配置>
    <packagesources>
    <add key=“nuget.org”value=“https://api.nuget.org/v3/index.json”/>
    <add key=“myfeed”value=“https://xxxxxxxx.pkgs.VisualStudio.com//u packaging/xxxxxxx/nuget/v3/index.json”/>gt;
    </packagesources>
    <PackageSourceCredentials>
    MyField≫
    <add key=“username”value=“LocalBuildAgent”/>
    <add key=“cleartextpassword”value=“xxxxxxxx”/>
    &MyField≫
    </packagesourcecredentials>
    </configuration>
    

    我已经查了几个类似的问题,但到目前为止我还没有找到解决问题的方法。

    一些注释:

    • 个人访问令牌未过期
    • 此特定生成在其他生成代理中成功运行
    • 使用此代理成功运行的带有“nuget restore”任务的生成至少有1个(regularnuget restoretask,not.net core)
    • 尝试重新启动生成代理,但未成功
    • 尝试在还原之前指定nuget的特定版本,但没有成功
    • .net core sdk build agent中的最新版本是2.1.500(安装了多个版本)。

    我错过了什么?如何解决此问题?为什么我不能使用dotnet restore命令恢复包?

    更新:

    当使用old时,包被还原,没有错误。nuget restoretask as follows:。

    更新2:。

    我可以使用.NET核心任务v1:还原包。

    或使用带参数的v2任务

    .

    安装的一些nuget包如下:

    • Netstandard.library 2.0.3版
    • Microsoft.aspnetcore.mvc 2.0.0版
    • Microsoft.netcore.app 2.1.5版

    尝试还原nuget包时生成失败,错误如下:

    “f:\agent01\w\141\s\xxxxx.sln”(还原目标)(1)-> (还原目标)-> C:\Program Files\dotnet\sdk\2.1.500\nuget.targets(114,5):错误:无法加载源的服务索引https://xxxxxxxxxx.pkgs.visualstudio.com/_packaging/xxxxxxxxxx/nuget/v3/index.json. C:\Program Files\dotnet\sdk\2.1.500\nuget.targets(114,5):错误:响应状态代码未指示成功:401(未授权)。

    生成任务如下:

    Nuget restore build task

    这是%appdata%\NuGet\nuget.config生成代理中的文件:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
        <add key="MyFeed" value="https://xxxxxxxxxx.pkgs.visualstudio.com/_packaging/xxxxxxxxxx/nuget/v3/index.json" />
      </packageSources>
      <packageSourceCredentials>
        <MyFeed>
          <add key="Username" value="LocalBuildAgent" />
          <add key="ClearTextPassword" value="xxxxxxxxxxx" />
        </MyFeed>
      </packageSourceCredentials>
    </configuration>
    

    我已经查了几个类似的问题,但到目前为止我还没有找到解决问题的方法。

    一些注释:

    • 个人访问令牌未过期
    • 此特定生成在其他生成代理中成功运行
    • 至少有一个生成具有“NuGET恢复“使用此代理成功运行的任务(常规NuGET恢复任务,而不是.NET核心)
    • 尝试重新启动生成代理,但未成功
    • 尝试specifying a specific version of nuget恢复前,没有成功
    • 生成代理中的.NET Core SDK最新版本为2.1.500(已安装多个版本)

    我错过了什么?如何解决此问题?为什么我不能使用dotnet restore命令?

    更新:

    当使用古老的NuGET恢复任务如下:

    Build definition

    更新2:

    我可以使用.NET核心任务v1还原包:

    Screenshot - restore packages using the .NET Core task v1

    或使用带参数的v2任务--force:

    3 回复  |  直到 6 年前
        1
  •  3
  •   Rui Jarimba    6 年前

    我找到了一个解决方案-将以下包源添加到 %appdata%\NuGet\nuget.config :

    <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\" />
    

    完整文件如下:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\" />
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
        <add key="MyFeed" value="https://xxxxxxxxxx.pkgs.visualstudio.com/_packaging/xxxxxxxxxx/nuget/v3/index.json" />
      </packageSources>
      <packageSourceCredentials>
        <MyFeed>
          <add key="Username" value="LocalBuildAgent" />
          <add key="ClearTextPassword" value="xxxxxxxxxxx" />
        </MyFeed>
      </packageSourceCredentials>
    </configuration>
    

    另外,检查 Regression in .NET SDK 500: 'dotnet tool install' fails with 401 (Unauthorized) when there is a private feed in NuGet.config #7524 . 此问题似乎是由.NET SDK 2.1.500引起的。

    另一个解决方法是卸载该版本:

    该问题在.NET核心SDK 2.1.400中不存在,例如它消失了 卸载.NET Core SDK 2.1.500后,在SDK时重新出现 2.1.500重新安装。

        2
  •  0
  •   cal5barton    6 年前

    我必须将nuget安装程序更改为4.8.1,以便在将vsts url切换到新的azure devops url后工作。

    enter image description here

        3
  •  0
  •   Andrel Vahter    6 年前

    使用最新的“use.net core sdk 2.1.504”任务对我有效。 似乎有一些.NET核心SDK 2.1.5xx的错误版本。