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


当前回答

对于那些因为构建服务器遇到这个问题而到达这里的人,您可以创建一个MSBuild目标,运行exec命令来运行nuget恢复命令,如下所示(在这种情况下,nuget.exe在.nuget文件夹中,而不是在路径上),然后可以在构建解决方案之前立即在TeamCity构建步骤中运行

<Target Name="BeforeBuild">
  <Exec Command="..\.nuget\nuget restore ..\MySolution.sln"/>
</Target>

其他回答

我使用visual studio 2015,上面给出的解决方案不适合我,所以我做了以下工作:

从我的解决方案中删除packages文件夹,也从解决方案中的每个项目中删除bin和obj文件夹,并重新构建。

也许你会遇到下一个错误:

无法找到nuget.exe

要解决这个问题:在你的NuGet中改变这一行。并将其设置为true:

<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

参考:https://stackoverflow.com/a/30918648和https://stackoverflow.com/a/20502049

打开包管理器控制台

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

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

Update-Package -Reinstall

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

Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

对于那些因为构建服务器遇到这个问题而到达这里的人,您可以创建一个MSBuild目标,运行exec命令来运行nuget恢复命令,如下所示(在这种情况下,nuget.exe在.nuget文件夹中,而不是在路径上),然后可以在构建解决方案之前立即在TeamCity构建步骤中运行

<Target Name="BeforeBuild">
  <Exec Command="..\.nuget\nuget restore ..\MySolution.sln"/>
</Target>

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

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

你可以使用NuGet .exe来恢复你的包,或者安装了NuGet 2.7或以上版本,你可以简单地在Visual Studio中编译你的解决方案,这也会恢复丢失的包。

对于NuGet.exe,您可以为每个项目运行以下命令。

nuget install packages.config

或者使用NuGet 2.7,您可以使用命令行恢复解决方案中的所有包。

nuget restore YourSolution.sln

这两种情况都会把包裹拉下来。但是,当运行此命令时,您的项目文件将不会被修改,因此项目应该已经有了对NuGet包的引用。如果不是这样,那么您可以使用Visual Studio来安装这些包。

使用NuGet 2.7及以上版本,Visual Studio将在构建解决方案时自动恢复丢失的NuGet包,因此不需要使用NuGet.exe。

要更新解决方案中的所有包,首先恢复它们,然后您可以使用NuGet.exe更新包,或者从Visual Studio中从包管理器控制台窗口更新包,最后您可以使用管理包对话框。

从命令行,您可以将解决方案中的包更新到nuget.org提供的最新版本。

nuget update YourSolution.sln

注意,这不会在任何NuGet包中运行任何PowerShell脚本。

在Visual Studio中,您可以使用包管理器控制台来更新包。这样做的好处是,任何PowerShell脚本都将作为更新的一部分运行,而使用NuGet.exe将不会运行它们。下面的命令将每个项目中的所有包更新到nuget.org提供的最新版本。

Update-Package

您还可以将此限制为一个项目。

Update-Package -Project YourProjectName

如果您希望将软件包重新安装到与之前安装的版本相同的版本,则可以使用-重装参数和Update-Package命令。

Update-Package -reinstall

您还可以将此限制为一个项目。

Update-Package -reinstall -Project YourProjectName

-重装选项将首先卸载包,然后将其重新安装到项目中。

或者,您可以使用管理包对话框更新包。

更新:

2013/07/10更新有关nuget恢复在nuget 2.7的信息 2014/07/06 -更新了关于Visual Studio中自动包恢复的信息,并将答案与NuGet的其他更改一起更新。 2014/11/21 -更新有关-重新安装的信息