当我从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
答案 0 :(得分:26)
请按照以下步骤操作:
第1步: 请右键单击解决方案[如下面的屏幕截图所示]
启用Nuget Package Restore
步骤2:[如果未按照步骤1解决问题/错误,请执行此操作] 如果您遇到问题,请在记事本中打开.csproj文件并检查可能看起来像的包路径
所以你的解决方案目录结构如下:
\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)
答案 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)
试试这个,
答案 7 :(得分:0)
只需右键单击解决方案&#34;启用NuGet包恢复&#34;解决我的问题。