【问题标题】:Visual Studio not downloading DLL for NuGet packageVisual Studio 没有为 NuGet 包下载 DLL
【发布时间】:2017-01-21 02:44:46
【问题描述】:

我们在本地 TeamCity 服务器上有一些 NuGet 包,并在各种项目中使用这些包。刚放假回来,从源代码中抓了最新的,尝试重新构建,结果由于缺少DLL而得到一堆编译错误。

似乎我们的其中一个包的 DLL 不是从 NuGet 下载的。我尝试开始一个新的 WPF 项目,并添加三个包。这三个都出现在 packages.config 文件中,但其中只有两个下载了 DLL。第三个只下载了 *.pdb 文件。

团队中没有其他人遇到此问题,我在备用机器上尝试了它,并且下载正常,所以看起来这是我的机器、Visual Studio 或 NuGet 安装的问题。但是,由于我可以毫无问题地从同一来源获取其他包,因此这看起来不是 VS 或 NuGet 的全球性问题。

我知道没有什么好说的了,但我不知道还能告诉你什么。如果有人可以提出任何建议,我将不胜感激。由于包源是我们自己的,很遗憾我不能分享。

我在 Windows 10 Pro 64 位(版本 1607,版本 14393.105)上使用 Visual Studio Enterprise 2015 Update 3(版本 14.0.25424.00)和 NuGet 包管理器版本 3.4.4.1321。如果还有什么我可以补充的,请告诉我。

【问题讨论】:

  • 尝试清除本地包缓存:nuget.exe locals all -clear
  • @jessehouwing 我收到一个错误“未知命令'locals'” - 有什么想法吗?我在解决方案的 .nugget 文件夹中打开了一个命令提示符来运行它。谢谢
  • @jessehouwing 另外,我尝试的新 WPF 项目没有 .nuget 文件夹,那么我将如何为该解决方案运行 nugget.exe?再次感谢
  • dist.nuget.org/win-x86-commandline/latest/nuget.exe下载最新版本的nuget.exe
  • 啊,看来您需要在运行命令之前更新 nuget.exe 本身。有关详细信息,请参阅 stackoverflow.com/a/34935038/6826677 和 ajbeaven 的评论

标签: visual-studio-2015 nuget


【解决方案1】:

将此作为答案发布,以便其他人可以找到它,即使您似乎自己找到了答案。我遇到过这个问题,所以请理解您的问题。

首先关闭 Visual Studio 的所有实例。在 VS 之外做任何会影响 VS 认为正在发生的事情的事情时,这通常是一个好主意。

如您所见,您需要使用命令行版本的 nuget 来清除缓存。你的第一个问题是找到这个,因为它并不明显。你的第二个问题(如果你搜索它)是你会发现它们的负载,每个解决方案的 .nuget 文件夹中都有一个。

解决这个问题的最简单方法是从他们的网站上download the latest nuget.exe。将其保存在远离任何项目的地方,以备不时之需。

此时,您将无法运行清除缓存的命令,因为您需要先升级 nuget 本身。我同意这看起来很奇怪,因为您刚刚下载了最新版本,但您需要执行以下操作...

nuget update -self

完成此操作后,您可以按照 jessehouwing 所述清除缓存...

nuget.exe locals all -clear

下次启动 Visual Studio 时,您应该会发现一切正常。您可能需要卸载并重新安装软件包才能使其正常运行,但在清除缓存后,应该可以正常运行。

希望一切都清楚。

【讨论】:

  • 感谢您发布此内容
  • 另一件要检查的事情 - 确保您下载的 NuGet 包的目标是与您的项目相同版本的 .NET。我有一个针对 4.7.1 的项目,而我的 NuGet 包针对 4.7.2 即使据称安装成功,也不会引用 DLL。
  • 我还必须从我的解决方案中的 packages/ 文件夹中删除包。
  • 您还可以通过单击工具菜单 > NuGet 包管理器 > 包管理器设置来清除 Visual Studio 中的缓存。单击“清除所有 NuGet 缓存”按钮。点击确定按钮。
【解决方案2】:

为了搜索者的利益(因为这让我有些沮丧)。

当我转移到一台新机器(Windows 10)时,我遇到了类似的问题,Nuget(在我的旧 Win10 机器上很好)会关闭除 dll 之外的所有内容。

解决方案

  1. 转到开始菜单并输入“允许应用程序通过 Windows 防火墙”
  2. 点击“更改设置”,然后点击“允许其他应用”
  3. 输入您的 Visual Studio 位置(例如,对于 VS 2017 - C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE,然后单击 devenv.exe)
  4. 为了确定,我检查了私有网络和公共网络。
  5. 已删除包文件夹
  6. 包还原或重建项目

这为我解决了问题。希望它也会对其他人有所帮助。

【讨论】:

  • 谢谢您,先生。我遇到了同样的问题。
【解决方案3】:

转到您的.NET CLI 并粘贴以下内容:

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design --version 3.1.3>

【讨论】:

    【解决方案4】:

    这是真正让我们程序员感到沮丧的事情。不是编码,只是弄乱在一台 PC 上运行的东西,而不是另一台。

    坦率地说,这种情况发生得太频繁了。

    无论如何,我想我会分享一个带有复选框的小滑块面板,它为我解决了这个问题。

    我在一些包的参考资料上看到了黄色的小星号图标。

    发布Update-Package -Reinstall 失败,因为这些包依赖于其他包。

    进入 nuget 菜单时,我看到了一个“选项”滑块。点击它。

    所以现在你看到的是这样的:

    现在检查是否允许强制重新安装有问题的软件包。

    顺便说一句,在新机器上开始开发时,我已经花了几个小时(这不是第一次遇到同样的问题)。

    【讨论】:

      猜你喜欢
      • 2013-01-31
      • 2021-12-03
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      相关资源
      最近更新 更多