新手:如何恢复nuget包?

Posted

技术标签:

【中文标题】新手:如何恢复nuget包?【英文标题】:Newbie: how to restore nuget packages? 【发布时间】:2021-09-13 12:14:13 【问题描述】:

我已经下载了一个基于 NuGet 包的 C# 项目,但我无法恢复它们。在这里,您可以看到当我要求恢复这些软件包时会发生什么:(除此之外,我智能手机上的“Authenticator”应用程序不断地向我请求许可(当然,我正在给予许可)。

这里是NuGet restore 在命令行中的结果(仅针对一个特定的包,有很多:

C:\<Project_Dir>>nuget restore
MSBuild auto-detection: using msbuild version '16.10.2.30804' from 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\bin'.
Restoring NuGet package Own_Product.Client.Core.1.52.1961.
...
  GET https://api.nuget.org/v3-flatcontainer/Own_Product.client.core/1.52.1961/Own_Product.client.core.1.52.1961.nupkg
...
  NotFound https://api.nuget.org/v3-flatcontainer/Own_Product.client.core/1.52.1961/Own_Product.client.core.1.52.1961.nupkg 459ms
...
  GET https://Own_Product.pkgs.visualstudio.com/_packaging/Own_ProductNuGetFeed/nuget/v2/Packages(Id='Own_Product.Client.Core',Version='1.52.1961')
...
  NotFound https://Own_Product.pkgs.visualstudio.com/_packaging/Own_ProductNuGetFeed/nuget/v2/Packages(Id='Own_Product.Client.Core',Version='1.52.1961') 1252ms
  GET https://Own_Product.pkgs.visualstudio.com/_packaging/Own_ProductNuGetFeed/nuget/v2/FindPackagesById()?id='Own_Product.Client.Core'&semVerLevel=2.0.0
...
  OK https://Own_Product.pkgs.visualstudio.com/_packaging/Own_ProductNuGetFeed/nuget/v2/FindPackagesById()?id='Own_Product.Client.Core'&semVerLevel=2.0.0 422ms
...
WARNING: Unable to find version '1.52.1961' of package 'Own_Product.Client.Core'.
  C:\Users\this_User\.nuget\packages\: Package 'Own_Product.Client.Core.1.52.1961' is not found on source 'C:\Users\this_User\.nuget\packages\'.
  C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\: Package 'Own_Product.Client.Core.1.52.1961' is not found on source 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\'.
  https://api.nuget.org/v3/index.json: Package 'Own_Product.Client.Core.1.52.1961' is not found on source 'https://api.nuget.org/v3/index.json'.
  https://Own_Product.pkgs.visualstudio.com/_packaging/Own_ProductNuGetFeed/nuget/v2: Package 'Own_Product.Client.Core.1.52.1961' is not found on source 'https://Own_Product.pkgs.visualstudio.com/_packaging/Own_ProductNuGetFeed/nuget/v2'.
...
WARNING: Unable to find version '1.52.1961' of package 'Own_Product.Client.Core'.
  C:\Users\this_User\.nuget\packages\: Package 'Own_Product.Client.Core.1.52.1961' is not found on source 'C:\Users\this_User\.nuget\packages\'.
  C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\: Package 'Own_Product.Client.Core.1.52.1961' is not found on source 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\'.
  https://api.nuget.org/v3/index.json: Package 'Own_Product.Client.Core.1.52.1961' is not found on source 'https://api.nuget.org/v3/index.json'.
  https://Own_Product.pkgs.visualstudio.com/_packaging/Own_ProductNuGetFeed/nuget/v2: Package 'Own_Product.Client.Core.1.52.1961' is not found on source 'https://Own_Product.pkgs.visualstudio.com/_packaging/Own_ProductNuGetFeed/nuget/v2'.
...

供您参考:

    我使用的是 NuGet.exe 版本 5.9.1.11,而不是标准的 2.8.50126.400 版本。

    Nuget list Own_Product.client.core 的结果提供了另一个版本,而不是我在进行常规编译时似乎正在寻找的版本:

     C:\<Project_Dir>>nuget list Own_Product.client.core
     nuget list Own_Product.client.core
     MSBuild auto-detection: using msbuild version '16.10.2.30804' from 
       'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\bin'.
     Own_Product.Client.Core 20.3.18.1
    

【问题讨论】:

你下载了什么 C# 项目?您希望在哪个服务器上找到 Own_Product.Client.Core? @canton7:也许我的问题不清楚:我下载的项目和我要恢复的 NuGet 包是我雇主的产品,不是我从互联网上下载的,如果这就是你的意思。 好的,您的雇主将他们的 NuGet 包(例如 Own_Product.Client.Core)存储在哪个服务器上?也许你应该向你办公室的人寻求帮助,因为这个问题显然是关于这个项目没有被配置为从正确的地方获取包,或者包在它们应该可用的地方不可用。由于这都是私人的,我认为我们也无能为力! @canton7:很抱歉,我在哪里可以找到这些信息? (我正在查看“.sln”、“.csproj”文件、NuGet.Targets、NuGet.config,我不知道在哪里可以找到这些信息。 每个半体面的项目都会有某种入职文档,告诉您如何设置以构建项目。向某人索取,如果不完整,请询问他们如何修复它并确保有人更新文档(或自己做) 【参考方案1】:

由于您提到这是针对内部存储库的,因此您可能缺少内部存储库的包源。这是在 %AppData%\NuGet\NuGet.config 文件中指定的,最容易通过 visual studio package sources dialog 进行编辑

查看错误似乎 nuget 正在寻找 api.nuget.orgOwn_Product.pkgs.visualstudio.com 的包。后者看起来不像是 Visual Studio 的真正存储库,因此它可能配置错误。

由于它是一个内部回购,很难说出确切的设置应该是什么,我建议你让大学发送他们使用的设置的副本。

【讨论】:

以上是关于新手:如何恢复nuget包?的主要内容,如果未能解决你的问题,请参考以下文章

TeamCity Build Server无法恢复nuget包

恢复 Nuget 引用?

使用 git 子模块恢复 Nuget 包

Azure Devops 找不到恢复的 nuget 包

markdown 恢复NuGet包

Nuget 包未恢复