SCENARIO
一个带有 n 项目的VS解决方案。项目A引用包Y v1,项目B引用包Y v2。现在无法使用解决方案级别的NuGet包管理对话框更新解决方案中所有项目的包Y的所有引用,只有在所有项目引用相同版本的包Y时才可以执行此操作。不是很大只处理两个项目,但我正在处理许多项目,这些项目通过糟糕的包管理引用了许多软件包版本,因为它们都应该引用相同的版本。
在我下午写一个控制台应用程序之前。自动更新解决方案的所有package.config文件,以便每个引用的包只通过它的最新版本引用(最新引用,而不是最新的,带有异常/警告等)....是否有工具/方法可用这已经?或者其他一些我不知道的方法?
答案 0 :(得分:10)
您可以在Nuget Package Manager for Solution中完成此操作(要查找菜单,右键单击解决方案或进入Tools-> Library Package Manager)。此对话框中的“更新”选项卡将建议更新适用于更新的多个项目。从“已安装”选项卡卸载时也是如此。
或者打开解决方案,打开NuGet控制台,运行“Update-Package”以更新所有项目的所有包。它还可以用于更新特定的包/项目:
Update-Package [-Id] <string> [-IgnoreDependencies] [-ProjectName <string>] [-Version <string>] [-Safe] [-Source <string>] [-IncludePrerelease]
它会找到与对话框相同的更新,只需确保在“Package Source:”下拉菜单中选择了正确的Feed(或“All”)。
示例:
PM> install-package NUnit -version 2.5.9.10348 -ProjectName ProjectA
Successfully installed 'NUnit 2.5.9.10348'.
Successfully added 'NUnit 2.5.9.10348' to ProjectA.
PM> install-package NUnit -version 2.5.10.11092 -ProjectName ProjectB
Successfully installed 'NUnit 2.5.10.11092'.
Successfully added 'NUnit 2.5.10.11092' to ProjectB.
PM> update-package
Updating 'NUnit' from version '2.5.9.10348' to '2.6.0.12054' in project 'ProjectA'.
Successfully removed 'NUnit 2.5.9.10348' from ProjectA.
Successfully installed 'NUnit 2.6.0.12054'.
Successfully added 'NUnit 2.6.0.12054' to ProjectA.
Successfully uninstalled 'NUnit 2.5.9.10348'.
Updating 'NUnit' from version '2.5.10.11092' to '2.6.0.12054' in project 'ProjectB'.
Successfully removed 'NUnit 2.5.10.11092' from ProjectB.
Successfully added 'NUnit 2.6.0.12054' to ProjectB.
Successfully uninstalled 'NUnit 2.5.10.11092'.
答案 1 :(得分:2)
首先,仅更改xml文件不足以让NuGet更改引用。实际上,有时在手动修改packages.config文件时会出现错误。包管理器控制台能够更新解决方案中的所有包;你可以简单地调用“Get-Project -All | Update-Package”命令。
其次,在调用此命令之前,请确保您有适当的包源。