如何在构建时将 NuGet 包更新到最新版本而不更改项目文件

How to update NuGet packages to the latest version at build time without altering Project files

我已经阅读了很多关于这个特定 and/or 相关问题的讨论(请参阅 Article1 and Article2),但所有这些问题似乎都是很久以前被问到的。考虑到 NuGet 2.8+ 的变化,我想知道是否有人能够找到解决这个问题的方法。

我想做的是确保我的项目始终使用某些(不一定是所有)NuGet 包的最新版本构建 WITHOUT 更改项目文件。我无法更改项目文件的原因是因为它们已签入源代码管理(Visual Studio)并且当 "upsteam" 项目创建更新版本的 NuGet 包。

到目前为止,在 Article3 的帮助下,我已经能够使用最新版本的 NuGet 包在构建时更新构建,从而达到预期的结果,但这实际上改变了 *. csproj 文件(使用 NuGet 更新命令)使这对我们来说不是一个可行的选择。

如有任何建议,我们将不胜感激。

如果您使用的是 NuGet 版本 2.x,那么这是不可能的。更新 NuGet 包时,NuGet 版本 2 将修改您的项目文件和 packages.config 文件。

如果您的项目类型受支持,您可以考虑使用 NuGet 版本 3,因为它允许您使用通配符(例如 1.*)指定范围。

另一种选择是使用 Paket。您可以使用 Paket 从命令行更新 NuGet 包,它不会修改您的项目文件。但是,您必须对所有 NuGet 更改使用 Paket,而不是 Visual Studio NuGet 包管理器。

最后的选择是根本不对这些 NuGet 包使用 NuGet,而是有一个单独的构建步骤来下载、更新它们并将它们提取到您的项目引用的公共 lib 目录中。