【问题标题】:How to enable nugets package restore in Visual Studio 2015?如何在 Visual Studio 2015 中启用 nuget 包还原?
【发布时间】:2015-03-23 17:49:52
【问题描述】:

如何在 Visual Studio 2015 中启用 nuget 包还原功能?

我的上下文菜单中缺少该功能(是的 - 我已经仔细检查过我在解决方案而不是项目上尝试了它)

我唯一的项目是 .NET 4.5 控制台应用程序 - 还没有 .nuget 文件夹。安装了一个实际的 nuget 包。

【问题讨论】:

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


【解决方案1】:

我遇到了和你一样的问题,我解决的方法是从我的解决方案中删除 packages 文件夹以及解决方案中每个项目的 binobj 文件夹,然后重新构建。

【讨论】:

  • 老兄,谢谢!我一直在网络上到处爬,这是在碰到许多砖墙后的真正解决方法
  • 这是最准确的答案,并为我解决了同样的问题。我尝试了一切,到处搜索,但没有任何效果。我不得不多次运行“update-package -reinstall”命令而没有编辑我的 packages.config,这太痛苦了!
  • 注意!请阅读下面 BinaryTox 的答案!
  • packages 文件夹被提交到源代码管理时,我就发生了这种情况。在我的例子中,.nupkg 文件在那里——所以 NuGet 认为没有任何东西可以恢复——但是实际的 DLL 还没有被提交(作为二进制文件)。详情见我的回答here
【解决方案2】:

事实证明,真正的解决方案是migrate to Automatic Package Restore。在 2013 年工作一段时间后升级到 VS 2015 后,我们遇到了 NuGet 问题。结果证明,使用 NuGet 的旧方式完全取代了新的方式。

解决方案很简单,但很乏味。显然 NuGet.targets 文件向 VS 发出信号以使用旧的 NuGet 处理方式,并且它的缺失意味着您现在正在使用“自动包还原”。您可以按照以下步骤迁移到自动包还原:

  1. 删除.nuget/NuGet.exe
  2. 删除 .nuget/NuGet.targets
  3. 对于每个项目:
    1. 卸载项目
    2. 右键->编辑项目
    3. 删除对 NuGet.targets 文件的所有引用,即以下内容:
<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找到它。

【讨论】:

  • 在外部编辑器中编辑项目文件更容易,VS会在您保存文件时发现文件已更改。
  • 您还需要确保您没有无意中将任何包提交到源代码/版本控制。源代码控制系统通常会忽略 DLL,但会将 .nupkg 文件提交到源存储库。那时,NuGet 会认为没有什么可恢复的,但是您的构建可能会失败。见my answer to a related question
  • 而且(据我了解)NuGet 本身会将包标记为需要添加到源代码管理中。您可能希望按照NuGet docs 中的说明禁用该行为。
  • powershell scripts 为我工作。
  • 当它报告错误NuGet.targets is missing时对我有用。
【解决方案3】:

对于其他人,此选项在 Visual Studio 选项的 Nuget 设置部分中可用

【讨论】:

  • 我最近在 vs 2015 中遇到了这个问题,并查看了我的选项/包源,由于某种原因,nuget 没有被检查为可用包源,我点击了它,一切都开始工作了
  • 你能告诉我在vs 2015中包缓存按钮将如何出现在nuget包管理器下
【解决方案4】:

我在还原软件包时遇到问题,错误 401 unauthorized。我通过取消选中可用的本地包源找到了解决方案。 调试 > 选项 > NuGet 包管理器 > 包源

只允许 nuget.org 包

【讨论】:

    【解决方案5】:

    我的 Visual Studio 2015 Professional 是使用默认设置安装的。 “允许 NuGet 下载丢失的包”和“在 Visual Studio 中构建期间自动检查丢失的包”选项已默认选中,但我仍然无法下载包。我收到一个找不到软件包版本的错误。

    我需要单击 Tools > Options > NuGet Package Manager > Package Sources 下的复选框以启用 NuGet Package Restore 以按预期工作。

    【讨论】:

    • 这并没有解决我的问题。
    【解决方案6】:

    在管理员模式下启动 Visual Studio 2015 后,我在访问包文件夹时遇到问题,因此我删除了它以执行还原。

    但是在重建解决方案时没有执行恢复,并且在解决方案级别或 Nuget 窗口中找不到恢复包。

    但是,如果您右键单击解决方案中项目上的 References 节点,则会出现 Restore Packages 选项。在所有项目上运行它为我修复了它。

    【讨论】:

      【解决方案7】:

      enter image description here

      嗯,VS2015 非常简单,我所要做的就是右键单击我的项目解决方案,然后单击恢复 nuget。

      【讨论】:

      • 这并没有解决我的问题。
      猜你喜欢
      • 2016-10-07
      • 2015-03-09
      • 2014-12-06
      • 1970-01-01
      • 2015-10-30
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多