此项目引用此计算机上缺少的NuGet程序包
我有一个ASP.NET MVC5应用程序昨天工作,现在我得到这个错误,当我尝试构建:
此项目引用此计算机上缺少的NuGet程序包。
我检查了两个选项,允许nuget自动下载并安装缺失的软件包。 我也尝试删除软件包文件夹中的所有文件,然后让nuget重新下载它们。 另外当我打开nuget并寻找更新时,它说没有需要安装的东西。 我无法想象还有什么办法可以超越这个令人讨厌的问题。
在我的情况下,我不得不从.csproj文件中删除以下内容:
<Import Project="$(SolutionDir).nugetNuGet.targets" Condition="Exists('$(SolutionDir).nugetNuGet.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).nugetNuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir).nugetNuGet.targets'))" />
</Target>
事实上,在这段代码中你可以看到错误信息来自哪里。
我从MSBuild-Integrated Package Restore转换为Automatic Package Restore (http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore)
一种解决方案是从.csproj文件中删除以下内容:
<Import Project="$(SolutionDir).nugetNuGet.targets" Condition="Exists('$(SolutionDir).nugetNuGet.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).nugetNuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir).nugetNuGet.targets'))" />
</Target>
怎么样?
在我的情况下,它发生在我将我的解决方案文件夹从一个位置移动到另一个位置之后,重新组织了一下,并在该过程中更改了它的相关文件夹结构。
所以我不得不在我的.csproj
文件中编辑类似于下面的所有条目
<Import Project="..packagesMicrosoft.Bcl.Build.1.0.14toolsMicrosoft.Bcl.Build.targets" Condition="Exists('..packagesMicrosoft.Bcl.Build.1.0.14toolsMicrosoft.Bcl.Build.targets')" />
至
<Import Project="packagesMicrosoft.Bcl.Build.1.0.14toolsMicrosoft.Bcl.Build.targets" Condition="Exists('packagesMicrosoft.Bcl.Build.1.0.14toolsMicrosoft.Bcl.Build.targets')" />
(注意从..packages
到packages
的变化,在你的情况下它可能是一个不同的相对结构,但你明白了。)
上一篇: This project references NuGet package(s) that are missing on this computer
下一篇: Best way to add NuGet packages as project references in VS2012?