我有一个包含多个项目的解决方案。大多数第三方引用都缺失了,但是有一些包。每个项目的配置文件。我如何得到NuGet安装/更新所有需要的包?这需要通过命令行为每个项目完成吗?


当前回答

打开包管理器控制台

视图->其他Windows -> Package Manager Console

重新安装当前解决方案all PROJECTS中的所有包:

Update-Package -Reinstall

重新安装当前解决方案的SPECIFIC PROJECT中的所有包(感谢unarity和ashes999):

Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

其他回答

我认为您需要做的第一件事是启用包恢复特性。也可以在这里看到。这是在解决方案(而不是项目)级别上完成的。

但这并不能解决所有问题——在启用恢复功能后,我遇到了类似的问题。(VS2013, NuGet 2.8)

事实证明,当我提交项目时,我已经(无意地)将包提交给了源代码控制——但是Visual Studio(和源代码控制插件)在执行签入时忽略了二进制文件。

当我创建一个发布分支时,问题出现了。我在dev/main/trunk分支的本地副本中有二进制文件,因为那是我最初安装/下载包的地方。 然而,在新的发布分支中,

包文件夹和. nuupkg文件都在那里——所以NuGet不认为有任何东西要恢复; 但与此同时,没有一个dll存在——即第三方引用缺失——所以我无法构建。

我删除了$(SolutionDir)/packages中的所有包文件夹(在发布分支下),然后运行完整的重新构建,这一次构建成功了。 ... 当然,然后我回到源代码控制中删除了包文件夹(在主干和发布分支中)。我还不清楚(目前)存储库是否。配置文件也应该被删除。

项目模板为您安装的许多组件(至少对于web项目而言)都是NuGet包。也就是说,这个问题并不局限于您添加的包。 因此,在创建项目/解决方案后立即启用包恢复,在执行初始签入之前,清除packages文件夹(并确保将.nuget文件夹提交给源代码控制)。

免责声明:我在SO上看到了另一个答案,它表明清除packages文件夹是解决方案的一部分。这让我找到了正确的方向,所以我想给作者点赞,但我再也找不到那个问题/答案了。如果我偶然发现了,我会把它编辑一下。

我还要注意Update-Package -重装会修改.sln和.csproj/。vbproj文件。至少对我来说是这样的。恕我直言,这使得这个选择不那么有吸引力。

Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

这是我找到的最好最简单的例子。它将重新安装在包中列出的所有块。配置,它将保留当前版本。用项目名称替换YourProjectNameGoesHere。

在Visual Studio中还有另一种更新且更快的方法来实现这一点。看看David Ebbo的这篇文章,如果你遇到麻烦,请参考评论部分。基本上,在包管理器提示符中执行以下操作:

PM> Install-Package NuGetPowerTools
PM> Enable-PackageRestore

之后,当您构建解决方案时,如果缺少这些包,将自动安装。

更新:

这个功能是内置在Nuget 1.6的visual studio集成,所以你甚至不需要安装NuGetPowerTools或键入命令。你所要做的就是

在“解决方案资源管理器”中右键单击“解决方案”节点并选择 启用NuGet包恢复。

阅读这篇文章了解更多细节。

不知道从什么时候开始,但在VS2019中你可以用一种更简单的方式来做:

在解决方案资源管理器中右键单击解决方案 为解决方案选择管理Nuget包 有4个选项卡,浏览,安装,更新,合并 合并显示是否有任何项目使用不同版本的包(在大多数情况下,这就是为什么我们要更新所有的包) “更新”显示任何项目中是否有可用的更新。选择全部并单击更新,任务将完成。

打开包管理器控制台

视图->其他Windows -> Package Manager Console

重新安装当前解决方案all PROJECTS中的所有包:

Update-Package -Reinstall

重新安装当前解决方案的SPECIFIC PROJECT中的所有包(感谢unarity和ashes999):

Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall