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

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

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

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


当前回答

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

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

希望能有所帮助。

其他回答

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

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

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

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

以下是我用来解决这个问题的步骤:

向解决方案中添加nuget包:

右键单击要引用nuget的项目(而不是解决方案) 包。 选择:管理nuget包 在弹出窗口中,左边有三个选择。 如果你选择在线>微软和。net,你将能够安装 微软的ASP。NET Web API 2.2包grouper(或任何包 你需要——我的是这个)。 现在右键单击您的解决方案(不是项目)并进行选择 启用nuget包恢复。这将导致包在编译时自动下载。

一种解决方案是从.csproj文件中删除以下内容:

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable 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('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

How?

右键单击项目。卸载项目。 右键单击项目。编辑csproj。 从文件中删除该部件。保存。 右键单击项目。重新加载项目。

当csproj和sln文件在同一个文件夹中时,我有这个(愚蠢,我知道)。一旦我把sln文件移动到csproj文件夹上面的文件夹

如果您正在使用TFS

删除NuGet.exe和NuGet。目标解决方案的.nuget文件夹中的文件。确保文件本身也从解决方案工作区中删除。 保留NuGet。配置文件继续绕过向源代码控制添加包。

编辑解决方案中的每个项目文件(例如,.csproj, .vbproj),并删除对NuGet的任何引用。目标文件。在您选择的编辑器中打开项目文件并删除以下设置:

<RestorePackages>true</RestorePackages>  
...
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />  
...
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">  
    <PropertyGroup>
        <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable 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('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

如果您不使用TFS

从解决方案中删除.nuget文件夹。确保文件夹本身也从解决方案工作区中删除。

编辑解决方案中的每个项目文件(例如,.csproj, .vbproj),并删除对NuGet的任何引用。目标文件。在您选择的编辑器中打开项目文件并删除以下设置:

<RestorePackages>true</RestorePackages>  
...
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />  
...
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">  
    <PropertyGroup>
        <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable 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('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

参考:迁移msbuild集成解决方案以使用自动包恢复