Visual Studio无法下载NuGet包的DLL文件

20

我们在本地的TeamCity服务器上有一些NuGet包,并在各种项目中使用它们。我刚从度假回来,从源代码中获取了最新的内容,然后尝试重新构建,但结果却出现了一堆编译错误,因为缺少一个DLL。

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

团队中没有其他人遇到此问题,而我在另一台电脑上尝试下载,下载成功。因此,看起来这是我的计算机、Visual Studio或NuGet安装的问题。然而,我可以从同一源获取其他包而没有问题,所以它看起来不像是VS或NuGet的全局问题。

我意识到提供的信息可能不足,但我不知道还能告诉您什么。如果有人有任何建议,我将非常感激。由于软件包源是我们自己的,不幸的是我无法分享它。

我使用的是Visual Studio Enterprise 2015 Update 3(版本14.0.25424.00)和NuGet包管理器版本3.4.4.1321,在Windows 10 Pro 64位(版本1607,构建14393.105)上运行。如果还有其他需要补充的内容,请让我知道。


1
尝试清除本地软件包缓存:nuget.exe locals all -clear - jessehouwing
@jessehouwing 我遇到了一个错误:“未知命令'locals'”,你有什么想法吗?我在我的解决方案的.nugget文件夹中打开了一个命令提示符来运行它。谢谢。 - DreamingOfSleep
@jessehouwing,而且,我尝试的新WPF项目没有.nuget文件夹,所以我应该如何对该解决方案运行nugget.exe呢?再次感谢。 - DreamingOfSleep
从以下网址下载最新版本的nuget.exe:https://dist.nuget.org/win-x86-commandline/latest/nuget.exe - jessehouwing
2
啊,看起来在运行命令之前需要更新nuget.exe本身。请参阅https://dev59.com/510Z5IYBdhLWcg3w6jse#34935038以及ajbeaven的评论获取详细信息。 - DreamingOfSleep
显示剩余2条评论
4个回答

32

把这个当做答案发布出来,以便其他人可以找到它,即使你似乎已经找到了答案。我也遇到过这个问题,所以理解你的问题。

首先关闭所有Visual Studio实例。在进行任何影响VS正在处理的内容之外的操作时,这通常是一个好主意。

正如你所看到的,你需要使用nuget命令行版本来清除缓存。你的第一个问题是找到它,因为它并不明显。你的第二个问题(如果你搜索它)是会找到大量的解决方案中的.nuget文件夹中的命令行版本。

绕过这个最简单的方法是从他们的网站下载最新的nuget.exe。将其保存在项目之外的某个地方,以防你再次需要它。

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

nuget update -self

完成这个步骤后,你可以像jessehouwing提到的那样清除缓存...

nuget.exe locals all -clear

当您下次启动 Visual Studio 时,您应该发现一切都如预期那样工作。您可能需要卸载并重新安装软件包以使其全部正常工作,但清除缓存后,这应该可以顺利完成而不会出现问题。

希望这一切都清楚明了。


1
感谢您发布这个。 - DreamingOfSleep
另一件需要检查的事情 - 确保你正在下载的NuGet软件包针对的是与你的项目相同版本的.NET。我有一个项目,它的目标是4.7.1版本,而我的NuGet软件包却是针对4.7.2版本的。即使安装成功,DLL也不会被引用。 - sitecorerick
我还需要从我的解决方案中的 packages/ 文件夹中删除这些包。 - Soren Bjornstad
1
您也可以通过单击“工具”菜单>“NuGet 包管理器”>“包管理器设置”来清除 Visual Studio 中的缓存。 单击“清除所有 NuGet 缓存”按钮。 单击“确定”按钮。 - Caltor

5
为了便于查找(因为这给我带来了一些烦恼)。
当我移动到一台新机器(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. 删除packages文件夹
  6. 恢复包或重新构建项目
这个方法对我有用。希望它也能帮助别人。

谢谢您,先生。我也遇到了同样的问题。 - Kanstantsin Arlouski

2
这是真正让我们程序员感到沮丧的事情。不是编码,而是折腾一些只在一个电脑上运行而在另一个电脑上却无法运行的东西。
说实话,这种情况发生得太频繁了。
无论如何,我想分享一个带有复选框的滑块面板,它为我解决了这个问题。
我在某些包的引用中看到了小黄色星号图标。
执行“Update-Package -Reinstall”失败,因为这些包依赖于其他包。
进入NuGet菜单,我看到了一个“选项”滑块。点击它。
现在你会看到类似于这样的东西:

enter image description here

现在正在检查是否允许强制重新安装有问题的软件包。
顺便说一下,我已经花了几个小时来解决这个问题(这不是第一次在新机器上开发时出现这个问题)。

0

前往你的 .NET CLI 并粘贴以下内容:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接