NuGet包未在Visual Studio 2017中还原。

8
我有一个使用Asp.netCore的解决方案,原本在Visual Studio 2015上运行良好,现在我转移到了Visual Studio 2017。现在的问题是,在每个Nuget包上都有黄色感叹号。我已经尝试过以下解决方案:

我使用的是Visual Studio版本:15.3.1

  • 以“管理员”身份运行并还原软件包。
  • 工具 >选项 > NuGet程序包管理器 >清除所有Nugget缓存,并再次还原Nuget。

You can see yellow mark on every nuget package

注:我已经搜索并找到以下解决方案,并尝试过,但没有解决我的问题。

解决方案1

4个回答

17

我在另一个帖子上找到了答案,应该归功于@AxelWass,尽管他没有特别针对这个问题,但它绝对解决了这个问题。上面的答案没有起作用。


我遇到了相同的问题,并通过在文本编辑器中打开项目并删除以下部分来解决它:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
     <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
   </PropertyGroup>
   <Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
   <Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>

一旦这个被移除,它将解决VS2017和PM似乎无法解决的这个噩梦问题。我也遇到过这种情况多次 - 尤其是当我在同一个解决方案目录中混合许多项目时。


1
另外,您可能也需要以管理员身份运行。但这样可以解决问题! - Shiroy
1
多奇怪啊,我已经花了好几个小时在这上面并尝试了很多方法。很高兴我终于找到了解决方案。 - Richard Mark Bonifacio

10

Microsoft安装和重新安装包文档中所述,您应该使用Update-Package -reinstall命令:

Update-Package -reinstall -ProjectName <project>命令中的 是受影响项目名称,它在Solution Explorer中显示。仅使用Update-Package -reinstall来恢复 解决方案中的所有软件包。

如果仍然存在错误,请尝试编辑您的项目文件并检查是否存在路径引用错误,还要检查项目/解决方案NuGet配置文件。


那对我没用,我又遇到了同样的错误。 - Zeeshan Ajmal

2
默认情况下,新安装的 Visual Studio 并未配置包源以在线搜索包,这是问题的原因。
我从 Stack Overflow 的一个链接中找到了答案:https://dev59.com/MlwY5IYBdhLWcg3wq5Qd#32360953
该回答提到使用 "https://www.nuget.org/api/v2" URL 来还原包。当我在 Visual Studio 2017 中打开包管理器控制台时,我发现它仅从我的电脑上(离线搜索)搜索包。
然后我将 "https://www.nuget.org/api/v2" URL 添加为还原包的源,就可以解决问题了。
按照以下步骤添加包源:
  1. 右键单击项目>管理 NuGet 包,您将看到 "package source label"。

  2. 将 URL 添加到包源中。

  3. 选择 "All" 作为包源。

一旦您配置了 Visual Studio,让其在线搜索包,所有的包就会被还原。

最终我找到了一个适合我的解决方案!在全新的VS2019安装中。 - Fede Lerner
这对我有用,我之前遇到了 https://api.nuget.org/v3/index.json 的问题。谢谢。 - Nabeel

0

我发现了nuget.config文件中的错误配置。我不知道为什么,在这个文件中有一些对于我的当前项目的排除。

您可以在文件资源管理器中运行此命令来查看您的全局配置

%AppData%\NuGet\NuGet.Config


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接