NuGet - 在单个解决方案中管理和删除多版本包
本文关键字:删除 版本 管理 单个 解决方案 NuGet | 更新日期: 2023-09-27 18:29:26
>SCENARIO
一个包含 n 个项目的 VS 解决方案。项目 A 引用包 Y v1,项目 B 引用包 Y v2。现在无法使用解决方案级别的 NuGet 包管理对话框更新解决方案中所有项目对包 Y 的所有引用,仅当所有项目都引用相同版本的包 Y 时,才能执行此操作。对于只有两个项目来说没什么大不了的,但我正在处理很多项目,这些项目由于包管理不善而引用了许多包版本,而它们都应该引用相同的版本。
在我花一个下午的时间编写控制台应用程序以自动更新解决方案的所有 package.config 文件之前,以便每个引用的包仅通过其最新版本(最新引用,不是最新版本,有例外/警告等(引用......有没有工具/方法可以做到这一点?还是我不知道的其他方法?
可以在
解决方案的 Nuget 包管理器中完成此操作(若要查找菜单,请右键单击解决方案或转到"工具->库包管理器"(。此对话框中的"更新"选项卡将建议针对更新适用的多个项目进行更新。这同样适用于从"已安装"选项卡卸载。
或者打开解决方案后,打开 NuGet 控制台,运行"更新包"以更新所有项目的所有包。它还可以更新特定的包/项目:
Update-Package [-Id] <string> [-IgnoreDependencies] [-ProjectName <string>] [-Version <string>] [-Safe] [-Source <string>] [-IncludePrerelease]
它将找到与对话框中相同的更新,只需确保在"包源:"下拉列表中选择了正确的提要(或"全部"(。
例:
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'.
首先,仅更改 xml 文件不足以让 NuGet 更改引用。事实上,有时当您手动修改 packages.config 文件时会出现错误。包管理器控制台能够更新解决方案中的所有包;您可以简单地调用"获取项目 - 全部 |更新包"命令。
其次,在调用此命令之前,请确保您有适当的包源可用。