我有一个ASP。NET MVC5应用程序,昨天工作,现在我得到这个错误时,我试图构建:

该项目引用了这台计算机上缺少的NuGet包。

我已经检查了两个选项,允许nuget自动下载和安装丢失的包检查/打开。我还尝试删除packages文件夹中的所有文件,然后让nuget重新下载它们。另外,当我打开nuget并寻找更新时,它说没有需要安装的。我想不出还能做些什么来解决这个恼人的问题。

我还通过右键单击项目并选择该选项启用了nuget恢复。然后,它添加了一个nuget文件夹和该文件夹中的三个项目,但没有采取任何措施来解决问题。我已经尝试重新构建,但仍然得到相同的错误。


当前回答

我也有同样的问题。在我的案例中,安装Microsoft.Bcl.Build包解决了这个问题。

其他回答

首先要尝试的是右键单击解决方案并选择“Restore Nuget Packages”。

在我的情况下,这并不管用,所以我遵循了一些删除项目文件上的“导入”和“目标”的建议,这适用于我的3个项目中的2个,但在最后一个项目上得到了不同的错误。

工作的是打开包管理器控制台并运行:

Update-Package -reinstall -ProjectName MyProjectName

这需要一些时间,但由于它重新安装所有的包,你的项目将编译没有问题

我有同样的错误,但在我的情况下,这是无关的nuget包在所有。 我的解决方案有一个项目,该项目参考了其他项目,这些项目不是我的解决方案的一部分,也没有构建。在用其他解决方案构建它们(或者我也可以将它们包含到我的解决方案中),并在visual studio中重新打开我的解决方案后,问题就解决了。

是否有可能包已经恢复到错误的文件夹?检查csproj文件中的路径是否正确。

如果它们不同,则可能是由于包现在被恢复到不同的位置造成的。这可能是由NuGet引起的。在指定节点时检查配置文件,如下所示:

<add key="repositoryPath" value="..\..\Packages" />

这些包正在被修复,项目仍然在寻找旧的位置。

编辑.sln和.csproj并不总是那么容易或理想。获得错误列表后,您可以看到哪些项目缺少包(而且,References节点通常指示有缺少程序集,除非包是源代码、资源、图像或只是基于文本的包)。

删除然后添加包不是一个好主意,除非您使用的是包的最新版本。否则,要准备好迎接意外,但不一定都是令人愉快的意外。

如果包是EntityFramework,那么从NuGet库中你可以得到最新的版本,在写这篇评论时它是6.1.3。

因此,处理这种情况最安全的方法可能是逐个恢复丢失的包。是的,一个有点痛苦的练习,但追逐细微的bug,由于不同的包版本可能更不愉快。

话虽如此,让EntityFramework再次成为缺失的包,你可以在包管理器控制台中发出以下命令:

PM> Install-Package EntityFramework -Version 6.0.1 

这将安装正确的版本,即6.0.1,即packages.config中指定的版本:

    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="EntityFramework" version="6.0.1" targetFramework="net451" />
    </packages>

我很容易地解决了这个问题,右键单击我的解决方案,然后单击启用NuGet包恢复选项

(注:确保你有Nuget Install From Tools—> Extensions and Update—> Nuget Package Manager for Visual Studio 2013。如果不先安装这个扩展)

希望能有所帮助。