【问题标题】:References to NuGet packages that are missing. Package Restore or re-installing packages does not work对缺失的 NuGet 包的引用。包还原或重新安装包不起作用
【发布时间】:2021-04-30 20:38:33
【问题描述】:

在 Visual Studio 解决方案中,有几个项目应具有 MSTest.TestAdapter NuGet 包等。从源代码管理下载后,解决方案中的每个项目都会显示错误: “此项目引用了此计算机上缺少的 NuGet 包。使用 NuGet 包还原下载它们。”

我曾尝试使用 NuGet 包管理器卸载并重新安装受影响的包,但无济于事。我也试过“包还原”。

解决方案中的每个项目都包含一个packages.config文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="MSTest.TestAdapter" version="2.1.2" targetFramework="net461" />
  <package id="NLog" version="4.7.7" targetFramework="net461" />
</packages>

使用 Visual Studio 2017。

如何解决这个问题?

【问题讨论】:

  • 恢复包时,您一定会在输出窗口中遇到一些错误。你能把那个错误贴在这里吗?

标签: c# .net visual-studio nuget


【解决方案1】:

输入csproj文件,然后删除这两行:

<Error Condition="!Exists('xxx\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', 'xx\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props'))" />
<Error Condition="!Exists('xx\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', 'xx\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets'))" />

这两行仍然基于您的源代码控制而不是您的新 VS 环境。您应该删除旧的错误路径,然后根据您当前的 VS 环境安装新路径。

之后,进入Tools-->Nuget Package Manager-->Package Manager Console,然后键入此以重新安装所有 nuget 包:

update-package -reinstall

【讨论】:

  • 解决方案中的几个项目中只有一个有一个 .csproj 文件。我编辑了该特定文件,与该项目相关的错误已得到解决。解决方案中剩余的项目如何处理?
  • 在VS IDE上打开解决方案时,在每个项目上右击->Unload Project-->然后在文件上右击-->edit xxx.csproj去掉两个xml线。您必须对每个项目都这样做。
  • 修改csproj是每个项目都应该做的步骤。完成后,您可以运行一次update-package -reinstall,它适用于解决方案下的所有项目。
  • @Al2110,有关于这个问题的更新吗?请让我们知道有关此问题的任何反馈。如果它有帮助,请不要忘记接受它。如果没有,请告诉我们您的其他问题。我们愿意为您提供进一步的帮助。
  • 我会试试这个并很快提供更新。
猜你喜欢
  • 2012-02-19
  • 1970-01-01
  • 2018-09-04
  • 1970-01-01
  • 2017-03-07
  • 2017-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多