恢复nuget包冲突

restore nuget package conflict

在 VS2019 中,在包管理器控制台中,我开始使用 update-package 更新我的解决方案的所有包,但它停止在;

update-package : Unable to find package 'System.Management.Automation_PowerShell_3.0'. Existing packages must be restored before performing an install or update. At line:1 char:1

  • update-package
  • CategoryInfo : NotSpecified: (:) [Update-Package], Exception
  • FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand

所以我右键单击我的解决方案并要求恢复 nuget 包,但随后,我得到了一条矛盾的信息。

All packages are already installed and there is nothing to restore. Time Elapsed: 00:00:00.0759442 ========== Finished ==========

当我管理解决方案 nuget 包时(右键单击解决方案,manage nuget packages for solution),在更新 tabitem 中,我 select 所有包并要求更新,我有一个:

Severity Code Description Project File Line Suppression State Error Object reference not set to an instance of an object.

这与我的代码无关(构建成功)。

如何进行?

这个行为很奇怪,实际上,当你点击 restore nuget packages 按钮并且工作正常时,证明你的解决方案的所有 nuget 包都存在),没有理由 update-package 命令不起作用。

所以请尝试以下建议来解决问题:

建议

1) clean all nuget caches

2) 检查你的 nuget package sources。检查安装 nuget 包的源,取消选中未使用的源。

记得查看System.Management.Automation_PowerShell_3.0的私有nuget源。

3)关闭VS,删除解决方案文件夹下的.vs隐藏文件夹,项目的binobj文件夹。

删除C:\xxx(current user)\perryq\AppData\Local\Microsoft\VisualStudio.0_xxx\ComponentModelCache下的所有vs组件缓存

4)尝试使用devenv /safemode(没有任何第三方vs安装的扩展或包的默认vs环境)启动你的vs然后测试你的项目.

============================================= =======================

5)尝试创建一个新项目然后安装System.Management.Automation_PowerShell_3.0和几个nuget包然后测试它。

如果在新项目上不存在,我想可能是你原项目的nuget包版本有冲突。您应该仔细检查您安装的软件包,或者您可以与我们共享 packages.config 文件来解决问题。

6) 首先备份您的 nuget package source。然后,关闭VS,删除C:\Users\xxx(current user)\AppData\Roaming\NuGet.

下的全局nuget.config文件

然后重启你的VS,然后将所需的nuget包源读入VS来测试你的项目。

7) Repair your VS 或者如果你的 VS2019 不是最新的,请更新它,这可能有修复。