【发布时间】:2015-03-23 17:49:52
【问题描述】:
如何在 Visual Studio 2015 中启用 nuget 包还原功能?
我的上下文菜单中缺少该功能(是的 - 我已经仔细检查过我在解决方案而不是项目上尝试了它)
我唯一的项目是 .NET 4.5 控制台应用程序 - 还没有 .nuget 文件夹。安装了一个实际的 nuget 包。
【问题讨论】:
标签: nuget visual-studio-2015 nuget-package-restore
如何在 Visual Studio 2015 中启用 nuget 包还原功能?
我的上下文菜单中缺少该功能(是的 - 我已经仔细检查过我在解决方案而不是项目上尝试了它)
我唯一的项目是 .NET 4.5 控制台应用程序 - 还没有 .nuget 文件夹。安装了一个实际的 nuget 包。
【问题讨论】:
标签: nuget visual-studio-2015 nuget-package-restore
我遇到了和你一样的问题,我解决的方法是从我的解决方案中删除 packages 文件夹以及解决方案中每个项目的 bin 和 obj 文件夹,然后重新构建。
【讨论】:
packages 文件夹被提交到源代码管理时,我就发生了这种情况。在我的例子中,.nupkg 文件在那里——所以 NuGet 认为没有任何东西可以恢复——但是实际的 DLL 还没有被提交(作为二进制文件)。详情见我的回答here。
事实证明,真正的解决方案是migrate to Automatic Package Restore。在 2013 年工作一段时间后升级到 VS 2015 后,我们遇到了 NuGet 问题。结果证明,使用 NuGet 的旧方式完全取代了新的方式。
解决方案很简单,但很乏味。显然 NuGet.targets 文件向 VS 发出信号以使用旧的 NuGet 处理方式,并且它的缺失意味着您现在正在使用“自动包还原”。您可以按照以下步骤迁移到自动包还原:
<RestorePackages>true</RestorePackages> ... <Import Project="$(SolutionDir)\.nuget\nuget.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)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" /> </Target>
如果您觉得大胆的话,还有一个 powershell 脚本可以为您执行迁移。你可以在github找到它。
【讨论】:
.nupkg 文件提交到源存储库。那时,NuGet 会认为没有什么可恢复的,但是您的构建可能会失败。见my answer to a related question。
NuGet.targets is missing时对我有用。
对于其他人,此选项在 Visual Studio 选项的 Nuget 设置部分中可用
【讨论】:
我在还原软件包时遇到问题,错误 401 unauthorized。我通过取消选中可用的本地包源找到了解决方案。 调试 > 选项 > NuGet 包管理器 > 包源
只允许 nuget.org 包
【讨论】:
在管理员模式下启动 Visual Studio 2015 后,我在访问包文件夹时遇到问题,因此我删除了它以执行还原。
但是在重建解决方案时没有执行恢复,并且在解决方案级别或 Nuget 窗口中找不到恢复包。
但是,如果您右键单击解决方案中项目上的 References 节点,则会出现 Restore Packages 选项。在所有项目上运行它为我修复了它。
【讨论】:
嗯,VS2015 非常简单,我所要做的就是右键单击我的项目解决方案,然后单击恢复 nuget。
【讨论】: