在VS2012“缺少包”中使用nuget时出错

时间:2013-09-16 17:11:44

标签: visual-studio nuget nuget-package-restore

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

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

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

picture of nugget options

然而我仍然得到错误。 我安装了nugget 2.7。使用VS2012更新3

8 个答案:

答案 0 :(得分:26)

请按照以下步骤操作:

第1步: 请右键单击解决方案[如下面的屏幕截图所示]

启用Nuget Package Restore

Enable Nuget Package Restore

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

Package Path

所以你的解决方案目录结构如下:

\SolutionDirectory\

包裹目录:

\SolutionDirectory\packages

项目目录:

\SolutionDirectory\ProjectName\ProjectName.csproj

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

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

答案 1 :(得分:21)

正如Dan所暗示的那样,如果你的解决方案有一个.nuget文件夹(来自启用包恢复),则根据http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore禁用nuget 2.7的自动包恢复功能。

如果禁用了自动程序包还原,则安装项目目标文件的任何程序包都将导致构建失败,直到您在解决方案中手动还原该程序包为止,如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,因为它将不再使用。

答案 2 :(得分:10)

答案对我找到解决方案非常有帮助。由于针对我的具体问题的解决方案还需要一个步骤,我在此处进行报告以防其他人有所帮助。 我得到的错误:

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.

我按照答案删除了所有建议的内容,但错误仍然显示出来。我终于删除了.csproj中的以下行:

<Error Condition="!Exists(...

答案 3 :(得分:6)

  1. 删除NuGet
  2. 使用取决于项目文件中的NuGet的记事本.targets删除
  3. 安装最新版本的NuGet
  4. 重新启动Visual Studio并重新打开项目/解决方案。
  5. 如果您需要,可以使用最新版本的NuGet
  6. 添加新的.nuget文件

答案 4 :(得分: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>

答案 5 :(得分:0)

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

答案 6 :(得分:0)

试试这个,

  1. 列表项
  2. 右键点击解决方案
  3. 点击管理NuGet
  4. 点击左下角的设置
  5. 选中允许NuGet下载丢失的包。

答案 7 :(得分:0)

只需右键单击解决方案&#34;启用NuGet包恢复&#34;解决我的问题。