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

问题描述 投票:0回答:3

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

我尝试使用“Update-Package -reinstall”,并得到了一堆“项目“项目名称”的当前包源中没有可用的包更新......这可能是由于缺少包文件造成的。

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

enter image description here

visual-studio nuget visual-studio-2019 nuget-package-restore
3个回答
2
投票

在 VS2019 中,那些 .net core 项目或 .net standard 项目使用 PackageReference 而不是 packages.config 格式来管理 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 中打开并加载解决方案或项目时,它将在

nuget packages
中显示
solution explorer
名称,但使用
yellow warning triangle
,因为现在 VS 无法在本地找到这些包。

有没有办法强制修复所有项目中的所有这些引用 使用“聪明”知道该做什么的命令或工具一次性完成 做什么?

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

1.前往

Nuget Package Manager
=>
Package Sources
,确保您已将
https://api.nuget.org/v3/index.json
设置为
Available Package sources.

之一

2.右键单击

Solution Explorer
中的解决方案,选择
Restore Nuget Packages
来恢复整个解决方案的包。

3.或者您可以卸载并重新加载项目来检查是否有帮助。

4.默认情况下,包存储在

C:\Users\xxx\.nuget\packages
文件夹中,您可以检查这些文件夹是否存在。

(我删除了该文件夹中的所有包,所以很明显,当我在VS中打开git解决方案时,nuget正在自动安装那些必要的包,我不确定是否有可能导致安装太多包,所以需要一些时间吗?我查了一下,

to restore necessary packages
对于
NorthWind
解决方案,它需要超过370MB的包)

我尝试使用“Update-Package -reinstall”并得到了一堆行 '当前软件包源没有可用的软件包更新 对于项目“项目名称”......这可能是由于缺少 打包文件。

而之所以

Update-Package -reinstall
在项目中不能很好地工作,可能是类似nuget问题#4103的问题,对于xx.csproj中的
packagereference
,目前有几个命令不支持。

在我检查我的机器后,该命令显然对于 PackageReference-format .net 标准项目

不起作用
。当我成功安装相关软件包时,我运行此命令但只得到 No package updates are available from the current package source for project xxx,然后我
删除
已安装的软件包,清理缓存并再次运行该命令,我仍然收到相同的消息! 所以我认为这个命令无法识别.csproj中的

PackageReference

格式,无论我是否安装相关包,它总是会抛出消息

No package updates are available ...
    


0
投票

Visual Studio Options with NuGet Package Manager, General open 这是我录制的一段小视频,展示了当我打开解决方案时我的机器上发生的情况。请留意窗口左下角的状态栏。

video of opening the solution, the status bar updating and quickly changing to say 如果您安装的 Visual Studio 与启用自动还原选项的行为不同,那么您的计算机上还存在其他一些问题,但截至我撰写本文时,我们没有从您的问题中获得足够的信息.


0
投票

关闭 Visual Studio 并转到:

C:\Users
\AppData\Roaming\NuGet

删除文件:

NuGet.Config

重新打开 Visual Studio 后,它将重新创建该文件。 我希望它有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.