在 visual studio 中更新解决方案级别的 nuget 包

Updating solution level nuget packages in visual studio

我想弄清楚 a) 我是否以正确的方式解决这个问题以及 b) 如何更新解决方案级别的 nuget 包。

核心问题是,当在解决方案级别(而不是在任何特定项目中)安装包并且您尝试更新它时,它不会删除旧引用。它只是添加了一个新的包引用,并导入了两个版本。这通常意味着(powershell 模块的工作原理)早期的 powershell 模块会覆盖较新的模块。

所以我要做的就是卸载软件包并重新安装它,这会获取较新的版本。似乎效率低下。

此外,我似乎无法从控制台安装或卸载解决方案级包。我必须使用我讨厌使用的管理 Nuget 包实用程序来完成它。

以下是我所做工作的一些背景知识,如果有帮助的话:

我在我们公司建立了一个系统,使用解决方案级别的 nuget 包向解决方案添加自定义 powershell 脚本模块,以及我编写的一些更通用的脚本解决方案(如删除 TFS 工作项或在文件系统和代码中更改项目名称)。

所以一个项目可能有 DataServiceUtilities 包,而另一个项目可能有 FrontEndUtilities 包。

那么,如何在不添加两个引用的情况下更新这些包?解决方案级别的操作是否可以在始终默认针对项目的包管理器控制台中完成?

似乎其中一些来自包管理器 GUI 工具和 Nuget 中的错误

包管理器 GUI 工具无法正确处理解决方案级包的更新。但是,如果您从包管理器控制台 运行 Update-Package 它将正确地 uninstall/re-install 解决方案级包。

至于从命令行安装,如果一个包只有一个工具文件夹而没有依赖项,你可以运行从命令行安装,它仍然安装在解决方案中并忽略默认项目。

但是,截至目前(Nuget 2.8),Nuget 中存在一个错误,导致它将依赖于其他解决方案级包的解决方案级包视为项目级包。它显然已经存在了大约一年,他们声称它将在 VS 2015 中修复。您可以在此处查看错误:https://nuget.codeplex.com/workitem/3642

这意味着您当前无法创建具有任何依赖项的解决方案级包。请注意,根据文档,这是合法的。希望明年能修好。

*更新

只是一个快速更新。似乎在 VS 2015 中,他们已弃用(或更准确地说,删除)解决方案 level/tools 只有包。在一些强烈抗议之后,他们还决定在未来的版本中重新实现它们,但他们这样做可能还需要一段时间。

可以在此处找到重新实现该功能的进度:https://github.com/NuGet/Home/issues/1521

可在此处找到有关如何解决缺失功能的讨论:https://github.com/NuGet/Home/issues/522