我试图弄清楚a)我是否以正确的方式解决这个问题,以及b)如何更新解决方案级别的nuget包。
核心问题是,当在解决方案级别(而不是在任何特定项目中)安装软件包并且您尝试更新它时,它不会删除旧的引用。它只是添加了一个新的包引用,并导入了两个版本。这通常意味着(powershell模块如何工作)早期的powershell模块覆盖了新的模块。
所以我要做的就是卸载软件包并重新安装它,从而获得更新的版本。似乎效率低下。
另外,我似乎无法从控制台安装或卸载解决方案级别的软件包。我必须使用Manage Nuget Packages实用程序,我讨厌使用它。
以下是我正在做的事情的一些背景,如果它有帮助:
我在我们公司建立了一个系统,使用解决方案级nuget包将自定义PowerShell脚本模块添加到解决方案中,以及我编写的一些更通用的脚本解决方案(比如删除TFS工作)项目或更改文件系统和代码内的项目名称。
因此,一个项目可能具有DataServiceUtilities包,另一个项目可能具有FrontEndUtilities包。
那么,如何在不添加两个引用的情况下更新这些包?并且可以在Package Manager控制台中完成解决方案级操作,该控制台始终默认为定位项目吗?
答案 0 :(得分:3)
似乎其中一些来自Package Manager GUI工具中的错误,以及一般的Nuget
Package Manager GUI工具无法正确处理解决方案级别包的更新。但是,如果从包管理器控制台运行Update-Package,它将正确卸载/重新安装解决方案级包。
至于从命令行安装,如果一个包只有一个工具文件夹而没有依赖项,你可以从命令行运行install,它会在解决方案中安装并忽略默认项目。
然而,截至目前(Nuget 2.8),Nuget有一个错误导致它将依赖于其他解决方案级别包的解决方案级别包作为项目级包处理。它显然已经存在了大约一年,他们声称它将在VS 2015中修复。你可以在这里看到错误:https://nuget.codeplex.com/workitem/3642
这意味着您目前无法创建具有任何依赖项的解决方案级别的包。请注意,根据文档,这是合法的。希望它能在明年修复。
*更新
快速更新。看起来在VS 2015中,他们已经弃用(或者更准确地说,已删除)仅限解决方案级别/工具的软件包。在发出强烈抗议之后,他们还决定在未来版本中重新实施它们,但它们可能需要一段时间才能实现。
可以在此处找到重新实施该功能的进展:https://github.com/NuGet/Home/issues/1521
有关如何解决缺失功能的讨论,请访问:https://github.com/NuGet/Home/issues/522