web-dev-qa-db-ja.com

Azure DevopsでNugetの復元が「ソースのサービスインデックスを読み込めません」というメッセージで失敗する

プライベートエージェントで実行されている.NETソリューションのビルドがあります。ソリューションには、.NET Core 2.1プロジェクトと.NET Standard 2.0プロジェクトの両方が含まれています。

インストールされているいくつかのnugetパッケージは次のとおりです。

  • NETStandard.Library v2.0.3
  • Microsoft.AspNetCore.Mvc v2.0.0
  • Microsoft.NETCore.App v2.1.5

Nugetパッケージを復元しようとすると、次のエラーでビルドが失敗します。

"F:\ Agent01\w\141\s\xxxxxxx.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 restore」タスクを持つビルドが少なくとも1つあります(通常のnuget restoreタスク、 .NET Coreではありません)
  • 成功せずにビルドエージェントを再起動しようとしました
  • 試みた nugetの特定のバージョンを指定 復元前、成功せず
  • ビルドエージェントの.NET Core SDK最新バージョンは2.1.500(複数バージョンがインストールされています)

私は何が欠けていますか?この問題を修正するには? dotnet restoreコマンドを使用してパッケージを復元できないのはなぜですか?

更新:

oldNuget Restore次のようなタスク:

Build definition

更新2:

.NET Coreタスクv1を使用してパッケージを復元できます。

Screenshot - restore packages using the .NET Core task v1

または、引数--forceを指定してv2タスクを使用します:

Screenshot - restore packages using --force

11
Rui Jarimba

私は解決策を見つけました-次のパッケージソースを%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>

また、 。NET SDK 500のリグレッション:NuGet.config#7524にプライベートフィードがある場合、 'dotnet tool install'が401(Unauthorized)で失敗します 。この問題は、.NET SDK 2.1.500が原因のようです。

別の回避策は、そのバージョンをアンインストールすることです。

この問題は、.NET Core SDK 2.1.400には存在しません。 .NET Core SDK 2.1.500がアンインストールされると消え、SDK 2.1.500が再度インストールされると再び表示されます。

10
Rui Jarimba

最新の「.NET Core sdk 2.1.504を使用」タスクを使用するとうまくいきました。 .NET Core sdk 2.1.5xxにはバグのあるバージョンがあるようです。

1
Andrel Vahter

VSTS URLを新しいAzure Devops URLに切り替えた後、これを機能させるには、nugetインストーラーを4.8.1に変更する必要がありました。

enter image description here

0
cal5barton