在 Azure DevOps 執行 NuGet Pack 遇到 401(Unauthorized)

打包 NuGet Package 到公司的 Azure DevOps Services feeds 的時候遇到的神奇問題

問題描述

Azure DevOps 上執行 dotnet pack 遇到這個問題

1
2
3
4
5
6
7
Build FAILED.

"D:\a\1\s\src\***********.csproj\***********.csproj" (Restore target) (1) ->
(Restore target) ->
C:\hostedtoolcache\windows\dotnet\sdk\3.1.403\NuGet.targets(128,5): error : Unable to load the service index for source https://pkgs.dev.azure.com/***********/_packaging/***********/nuget/v3/index.json. [D:\a\1\s\src\***********\***********.csproj]
C:\hostedtoolcache\windows\dotnet\sdk\3.1.403\NuGet.targets(128,5): error : Response status code does not indicate success: 401 (Unauthorized). [D:\a\1\s\src\***********\***********.csproj]

解法

起初以為是 Azure DevOps Services feeds 設定有問題,但仔細一想,那也應該是在 dotnet push 的時候出問題。

跟公司同事討論了很久才注意到 Restore 這個字,於是試著在 pack 之前加上 dotnet restore,然後就解決了(WTF)。

1
2
3
4
5
6
- task: DotNetCoreCLI@2
displayName: Restore source project's NuGet package(s)
inputs:
command: restore
projects: $(sourceProject)
feedsToUse: select

感想

Response status code does not indicate success: 401 (Unauthorized). 這個錯誤訊息太不明顯了,超容易被誤導

而且我到現在還是不明白中間發生什麼事,哪天在官方文件找到解答再補上來