NuGet包丢失

340

我搜索了这个问题但是没有一个解决方案有效。我安装了Visual Studio Professional 2015并且正在使用TFS,我的NuGet版本是3.1.6。这个问题只出现在我的C# Web API/MVC项目中。

我遇到以下错误:

此项目引用缺失于此计算机上的 NuGet 包。请使用 NuGet 包恢复下载它们。有关更多信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105。缺失的文件为..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props

  1. 我没有.sln中的.nuget文件夹。
  2. 我在解决方案中有一个名为“packages”的文件夹,当我删除它时,似乎NuGet确实会重新构建依赖项,但是项目仍然会出现上述错误。
  3. 我尝试将项目从TFS中删除,但这并没有解决问题。
  4. 除了上述错误之外,项目中的所有引用都有黄色警告标志,并显示它们缺失。
  5. 当我检查该项目的NuGet包管理器时,“缺失”的所有东西都有绿色勾号,包括Microsoft.Net.Compilers。
  6. 我尝试添加一个新的Web API/MVC项目,它面临着类似的问题,其中大多数引用(如Owin)都有黄色警告标志。
38个回答

6

只需启用NuGet软件包还原。 右键单击您的解决方案,选择“启用NuGet软件包还原”。

右键单击您的解决方案,选择“启用NuGet软件包还原”

这将创建包含NuGet.Config文件的.nuget文件夹,并修复了我的问题。


谢谢!我也遇到了类似的情况,“启用NuGet包还原”起了作用。 - Jain Prince
21
对我来说不起作用,它显示“所有软件包已安装且无需恢复”。 - Dalibor

6
对我来说,问题在于当我将解决方案复制到一个新文件夹并打开它时,如下图所示,Nuget文件夹不见了。我复制了这个文件夹,然后一切正常工作。注意:这个文件夹在我们的源代码控制中,但不在这个解决方案的项目中,它在上一级目录中。
注:enter image description here

4

我正在使用VS2012,遇到了同样的错误。我从.csproj文件中删除了以下Target标签,然后就可以编译而不出现任何错误了。

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  -- Error messages within Target Tag
</Target>

2
对于遇到我遇到的问题(在构建服务器上有一些但不是所有的包被恢复),对于任何人来说,最后一个谜题的关键是在我的解决方案根目录中添加NuGet.config,与.SLN文件并列,就像David Ebbo在这里解释的那样:http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html
从Ebbo的博客文章中,对于我来说,文件内容非常简单。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
</configuration>

更新:

NuGet API URL在v3版本(截至2016年9月)中已更改。从https://www.nuget.org/访问。

<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />

2
错误信息是完全正确的。我尝试了所有的技巧,但都没有起作用。这个项目(简单的MVC Web应用程序测试)从Windows 8.1 VS 2015 Community移动到我的新测试盒子上的Windows 10。VS 2015的所有最新更新已应用。我甚至无法安装任何更新版本的编译器包。
Loop:
<LOOP>This seems to be a Ground Hog Day phenomena.</LOOP>
GoTo Loop

我最终只是将Microsoft.Net.Compilers.1.0.0从旧项目中复制到新项目中,然后它就能够正常工作了。接着我便可以开始更新其他包的版本。这似乎是一个nuget项目升级过程中的错误。

注意: 原项目是在VS 2015中创建的,并没有任何传统的nuget方法。


1
如果您在使用此构建命令时与package.config一起使用,则会出现此错误。
MSBuild.exe /t:Restore MySln.sln

在这种情况下,要么切换到nuget restore命令,要么使用PackageReference

1

对我来说,我的gitignore文件忽略了我的packages文件夹。以下gitignore行导致了这个问题 -

**/packages/*

我删除了它,然后恢复了我的软件包文件夹。希望这能帮助其他人。


1
我在Azure中从Git部署时遇到了构建失败的问题。
原来我的.gitignore文件将build文件夹从..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props中排除了。
一旦将build文件夹(强制)提交到Git,问题就解决了。

1
在我这个案例中有效的解决方案 - Visual Studio 2015企业版,项目.NET 4.6.1
  1. 升级到Update 3
  2. 安装Web开发工具

Visual studio installation wizzard


1
在我的情况下,*.csproj文件中缺少<RestorePackages>true</RestorePackages>。不需要删除以前答案中看到的代码片段。

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