我研究了这个问题,但没有一个解决办法有效。我安装了Visual Studio Professional 2015,我正在使用TFS。我的NuGet版本是3.1.6。这个问题只发生在我的c# Web API/MVC项目中。

我得到以下错误:

这个项目引用了NuGet包(s),这是缺失的 电脑。使用NuGet包还原来下载它们。更多的 信息,见http://go.microsoft.com/fwlink/?LinkID=322105。的 丢失的文件是 . . \ \ Microsoft.Net.Compilers.1.0.0 \制造\ Microsoft.Net.Compilers.props包

I do not have .nuget folder in my solutions. I have a packages folder in the solution and when I delete it, it seems like NuGet does rebuild the dependencies but the project still has the above error. I tried removing the project from TFS and it didn't fix it. Along with the above error, all the references in the project have yellow warning signs and say they are missing. When I checked the NuGet Package Manager for the project, everything that is "missing" has a green tick next to it, including Microsoft.Net.Compilers. I tried adding a new Web API/MVC project and it faced a similar problem where most references such as Owin were "missing" with the yellow warning sign.


当前回答

对于在这里遇到我遇到的问题(在构建服务器上恢复了一些包,但不是所有包)的任何人来说,对我来说,难题的最后一块是添加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>

更新:

v3的NuGet API URL已更改(截至2016年9月)。从https://www.nuget.org/

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

其他回答

我通过从.csproj文件中删除这段代码来解决我的问题:

<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>

注意——这将更新整个解决方案的包,而不仅仅是项目。

如果你还有一个丢失的nuget包,在构建解决方案时给出错误,请使用以下命令,从工具> nuget包管理器>包管理器控制台使用nuget命令控制台。它将重新安装您的所有当前包。

Update-Package –reinstall

更新:

您可以将特定的项目名称作为参数传递。

Update-Package –reinstall -ProjectName SampleApp

我正在使用VS2012,遇到同样的错误。我从.csproj文件中删除了下面的Target标记,它开始编译,没有出现任何错误。

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

我知道这个问题很老了,但是我今天遇到了同样的情况,我想为最近发现这个问题的人提供我的2美分。我手动移动到解决方案中的一个子文件夹,然后使用Visual Studio 2017删除并读取到解决方案的一个ASP MVC项目给出了上述错误。移动“lib”和“packages”文件夹到同一子文件夹的根MVC项目修复了我的问题。

您还可以使用建议的错误消息作为提示。下面是如何找到解决方案的管理包,并单击解决丢失的nuget包。

就是这样