30

当我从 VS2012 中构建我的项目时,我收到以下错误消息

This project references NuGet package(s) that are missing on this computer. 
Enable NuGet Package Restore to download them. 

我为 NuGet 设置了 nuget 选项以下载丢失的包。

金块选项的图片

但是我仍然得到错误。我已经安装了 nugget 2.7。用VS2012更新3

4

8 回答 8

26

请按照以下提到的步骤操作:

第 1 步:请通过右键单击解决方案启用 Nuget 包还原 [如下面的截图所述]

启用 Nuget 包还原

第 2 步:[如果按照第 1 步解决问题/错误,请按照此操作] 如果您遇到问题,请在记事本中打开 .csproj 文件并检查可能看起来像这样的包路径

包路径

因此,您的解决方案目录结构将如下所示:

\SolutionDirectory\

包目录:

\SolutionDirectory\packages

项目目录:

\SolutionDirectory\ProjectName\ProjectName.csproj

请在记事本中打开此 .csproj [出现错误] 并搜索包路径并将其更新为相关路径。

例如,我的 .csproj 包含,如果 .csproj 文件包含,..\..\packages则使用更新该路径..\packages

于 2014-08-28T05:11:27.873 回答
21

正如 Dan 所暗示的,如果您的解决方案有一个 .nuget 文件夹(通过启用包还原),那么 nuget 2.7 的自动包还原功能将被禁用,根据http://docs.nuget.org/docs/workflows/migrating -到自动包恢复

如果禁用了自动包恢复,那么任何安装项目目标文件的包都会导致构建失败,直到您在解决方案中手动恢复该包,如http://blogs.msdn.com/b/dotnet/archive所述/2013/06/12/nuget-package-restore-issues.aspx。(请注意,由于 nuget 2.7 自动包恢复可用,链接中描述的解决方法已经过时。)

因此,如果这两件事都成立,则删除 .nuget 文件夹中的 NuGet.targets 文件,然后 Nuget 将在调用 MSBuild 之前恢复丢失的包。您也可以删除 .nuget 文件夹中的 nuget.exe,因为它将不再使用。

于 2013-09-25T03:22:42.450 回答
10

The answers are very helpful for me to find the solution. Since the resolution to my specific issue requires one more step, I report it here in case it is helpful to others. The error I was getting:

Error   117 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 ..\..\Windows Phone 8\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets.

I followed the answers and deleted all the suggested things, but the error still kept showing up. I finally got rid of it by deleting the following line in the .csproj:

<Error Condition="!Exists(...
于 2015-07-26T22:07:46.940 回答
6
  1. 删除 NuGet
  2. 使用记事本 .targets 删除依赖于项目文件中的 NuGet
  3. 安装最新版本的 NuGet
  4. 重新启动 Visual Studio 并重新打开项目/解决方案。
  5. 如果需要,可以使用最新版本的 NuGet 添加新的 .nuget 文件
于 2014-01-30T08:25:00.823 回答
2

csproj在记事本中打开文件并Error Condition从此处删除元素(或使这些条件起作用):

<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'))" />
    <Error Condition="!Exists('..\packages\System.Data.SQLite.Core.1.0.101.0\build\net45\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Data.SQLite.Core.1.0.101.0\build\net45\System.Data.SQLite.Core.targets'))" />
  </Target>
于 2016-05-26T04:22:58.507 回答
0

从解决方案中删除 .nuget 目录(如果存在)。编辑项目文件并删除包含对 .nuget 文件夹的引用的元素 Import 和 Target,保存并重新加载项目。

于 2015-02-11T15:34:12.963 回答
0

尝试这个,

  1. 项目清单
  2. 右键单击解决方案
  3. 单击管理 NuGet
  4. 点击左下角的设置
  5. 检查允许 NuGet 下载丢失的包。
于 2015-07-08T13:09:14.057 回答
0

只需右键单击解决方案并“启用 NuGet 包还原”即可解决我的问题。

于 2016-02-10T13:50:01.947 回答