Visual studio 如何快速修复.net核心解决方案中的所有Nuget引用?

Visual studio 如何快速修复.net核心解决方案中的所有Nuget引用?,visual-studio,nuget,visual-studio-2019,nuget-package-restore,Visual Studio,Nuget,Visual Studio 2019,Nuget Package Restore,我发现这是一个常见的问题,当我从Github下载.NET repo时,该解决方案缺少引用。请参见下面的示例。当使用Nuget软件包管理器时,它表示软件包已经安装。缺少“包”文件夹 我试着使用“更新包-重新安装”,并得到了一堆行“没有包更新可从当前包源的项目'项目名称'。。。。这可能是由于缺少包文件 我可以手动修复每个引用,但这是一个耗时的过程。有没有一种方法可以使用“聪明”知道该怎么做的命令或工具,一次性强制修复所有项目中的所有这些引用?我正在使用Visual Studio 2019 16.3预

我发现这是一个常见的问题,当我从Github下载.NET repo时,该解决方案缺少引用。请参见下面的示例。当使用Nuget软件包管理器时,它表示软件包已经安装。缺少“包”文件夹

我试着使用“更新包-重新安装”,并得到了一堆行“没有包更新可从当前包源的项目'项目名称'。。。。这可能是由于缺少包文件

我可以手动修复每个引用,但这是一个耗时的过程。有没有一种方法可以使用“聪明”知道该怎么做的命令或工具,一次性强制修复所有项目中的所有这些引用?我正在使用Visual Studio 2019 16.3预览版1


NuGet通常配置为自动恢复包。请参见选项页。第二个包还原选项“在Visual Studio中生成期间自动检查丢失的包”默认情况下在干净安装时启用

这是我录制的一段视频,讲述了当我打开解决方案时在我的机器上发生的事情。注意窗口左下角的状态栏


如果您的Visual Studio安装与启用自动还原选项的方式不同,则您的计算机上还有其他一些问题,但截至我撰写本文时,我们没有从您的问题中获得足够的信息。

在VS2019中,那些.net核心项目或.net标准项目使用而不是格式来管理nuget包。通过这种方式,xx.csproj中的内容类似于:

<ItemGroup>
    <PackageReference Include="FluentValidation" Version="8.1.3" />
    <PackageReference Include="MediatR" Version="6.0.0" />
    <PackageReference Include="AutoMapper" Version="8.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.3" />
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
  </ItemGroup>

每次下载使用packageReference格式的项目时,您只能获得xx.csproj和相关源文件,但没有nuget软件包。因此,当您在VS IDE中打开并加载解决方案或项目时,它将在
solution explorer
中显示
nuget包
名称,但带有
黄色警告三角形
,因为现在VS无法在本地找到这些包

有没有办法强制修复所有项目中的所有这些引用 在一次突袭中,使用一个“聪明地”知道该做什么的命令或工具 是吗

就像zivkan在他的回答中所说的那样,NuGet通常配置为自动恢复包,如果您启用了这两个选项。每次我们在IDE中加载soultion时,它都会自动为我们恢复包。不确定它在您的机器中似乎不起作用的原因,但您可以检查并尝试:

1.转到Nuget软件包管理器=>
软件包源
,确保已设置
https://api.nuget.org/v3/index.json
作为可用软件包来源之一。

2.在
解决方案资源管理器中的解决方案上单击鼠标右键,选择
还原Nuget程序包
,以还原整个解决方案的程序包

3.或者您可以卸载并重新加载项目以检查它是否有用

4.默认情况下,包存储在
C:\Users\xxx\.nuget\packages
文件夹中,您可以检查这些文件夹是否存在

(我删除了该文件夹中的所有软件包,因此当我在VS中打开git解决方案时就很清楚了,nuget正在自动安装那些必要的软件包,我不确定是否有可能导致安装了太多的软件包,因此需要一些时间?我检查并找到,
以恢复
NorthWind的必要软件包
解决方案,它需要超过370MB的软件包)

我试着使用“更新包-重新安装”,得到了一大堆行 使用“当前包源没有可用的包更新” 对于项目“项目名称”…这可能是由于缺少 包文件

由于
更新包-重新安装
在项目中不起作用的原因,可能是类似的问题,例如,对于xx.csproj中的
包引用
,目前不支持几个命令

在我签入我的机器后,对于
PackageReference format
.net标准项目,该命令显然不起作用。当我成功安装相关软件包时,我运行该命令,但仅获得
对于项目xxx的当前软件包源没有可用的软件包更新,然后我删除安装的软件包,清理缓存并再次运行命令,我仍然收到相同的消息


因此,我认为该命令无法识别.csproj中的
PackageRefernece
格式,无论我是否安装相关软件包,它都会抛出消息
没有可用的软件包更新…

这两个选项已经启用。我已经在手动更新软件包,因此这些选项在呃,它们是开是关。@Tony_Henrich在这种情况下,您没有提供足够的信息来帮助我。您的VS是否在状态栏中显示“还原完成”消息?是否显示“程序包管理器”输出包含任何消息?从命令行还原是否会给出任何消息?您的
obj/project.assets.json是否有错误部分?您的问题中的“手动修复”是什么意思?要评论两点,packages文件夹仅由
packages.config
projects.SDK样式的项目使用(这是SDK,因为它在树中有一个“依赖项”节点,而不是“引用”)仅支持
PackageReference
,它不使用软件包文件夹。
更新软件包-重新安装
也只支持
packages.config
,这就是它不做任何事情的原因。删除obj文件夹并重新打开解决方案Hi Tony,此问题的任何更新:)我所做的是手动删除其中一个引用并将其添加回,然后其他引用突然被修复。感谢您发布的信息。请验证根文件夹.Ens中的NuGet.config