我有一个包含多个项目的解决方案。大多数第三方引用都缺失了,但是有一些包。每个项目的配置文件。我如何得到NuGet安装/更新所有需要的包?这需要通过命令行为每个项目完成吗?
当前回答
现在Nuget包管理器控制台在Visual Studio 2012给你一个“恢复”按钮,一旦它发现任何包没有安装,但在Package .config。 很棒的功能!
其他回答
你可以使用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 -更新有关-重新安装的信息
在最新的NuGet 2.5版本中,包管理器中现在有一个“更新全部”按钮:http://docs.nuget.org/docs/release-notes/nuget-2.5#Update_All_button_to_allow_updating_all_packages_at_once
Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall
这是我找到的最好最简单的例子。它将重新安装在包中列出的所有块。配置,它将保留当前版本。用项目名称替换YourProjectNameGoesHere。
现在Nuget包管理器控制台在Visual Studio 2012给你一个“恢复”按钮,一旦它发现任何包没有安装,但在Package .config。 很棒的功能!
我知道这是一个老帖子,但我认为这可能有用。如果您需要在更新过程中忽略特定的包(如任何更新JavaScript引用的包),请使用以下PowerShell脚本(确保您的包源在包管理器控制台中设置为“All”):
编辑2014-09-25 10:55 AM EST -修复了脚本中的一个错误
$packagePath = "packages.config"
$projectName = "MyProjectName"
$packagesToIgnore = @(
"bootstrap",
"jQuery",
"jquery-globalize",
"jquery.mobile",
"jQuery.jqGrid",
"jQuery.UI.Combined",
"jQuery.Validation",
"Microsoft.jQuery.Unobtrusive.Validation",
"Modernizr",
"Moment.js"
)
[xml]$packageFile = gc $packagePath
$packagesToProcess = $packageFile.packages.package | Where-Object {$packagesToIgnore -notcontains $_.id}
$packagesToProcess | % { Update-Package -reinstall -projectname $projectName -id $($_.id) }
推荐文章
- Nuget连接尝试失败“无法为源加载服务索引”
- 重新定位解决方案从。net 4.0到4.5 -如何重新定位NuGet包?
- 如何在解决方案中找到未使用的NuGet包?
- 获取“项目”核配置无效错误
- 如何在Visual Studio中启用NuGet包恢复?
- 系统。方法未找到?
- 是否可以更改NuGet包的位置?
- 缺少NuGet包
- 让TFS忽略我的包文件夹
- 如何通过NuGet安装旧版本的包?
- 该项目引用了这台计算机上缺少的NuGet包
- 资产文件project.assets.json未找到。运行NuGet包恢复
- 如何使用命令行清除NuGet包缓存?
- 如何在本地安装NuGet包. nuupkg文件?
- 如何获得NuGet来安装/更新packages.config中的所有包?