Nuget更新包不支持';无法识别已安装的软件包-->;更新失败
我已经在VS项目中安装了一个NuGet包(我们在项目中开发)。当我在nuget项目上运行更新包时,我得到:Nuget更新包不支持';无法识别已安装的软件包-->;更新失败,nuget,Nuget,我已经在VS项目中安装了一个NuGet包(我们在项目中开发)。当我在nuget项目上运行更新包时,我得到: Update-Package : 'Project name' was not installed in any project. Update failed. At line:1 char:15 + Update-Package <<<< Project name + CategoryInfo : NotSpecified: (:) [
Update-Package : 'Project name' was not installed in any project. Update failed.
At line:1 char:15
+ Update-Package <<<< Project name
+ CategoryInfo : NotSpecified: (:) [Update-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.UpdatePackageCommand
更新包:“项目名称”未安装在任何项目中。更新失败。
第1行字符:15
+Update Package最近我遇到了一个非常类似的问题-原来packages/repositories.config丢失了(因为我们没有提交packages文件夹)。我在VS中做了一些事情(可能会向项目中添加一个新包),导致VS重新生成repositories.config文件,其中列出了所有项目中的所有包。之后,更新工作正常。以下是我如何获得最新版本的软件包管理器:
在管理模式下启动VS2010(以管理员身份运行)
工具>加载项管理器>卸载NuGet
重新启动Visual Studio
安装NuGet
瞧
希望这有帮助。我也有同样的问题。我们没有签入packages文件夹(nuget build任务下载所有包)
我解决这个问题的唯一方法是删除packages文件夹,然后重建项目。我正在处理与Tomas相同的项目,我试图找出这个问题发生的时间和原因。当我们在packages文件夹中有一个或多个包的旧版本并尝试发出“updatepackage”命令时,似乎会发生这种情况
在发出命令之前,我们的packages文件夹和配置如下所示:
软件包文件夹:
Common.WebApi.1.0.0.109
Common.WebApi.1.0.0.110
包配置:
<packages>
<package id="Common.WebApi" version="1.0.0.110" />
<package id="System.Json" version="4.0.20126.16343" />
<package id="System.Net.Http" version="2.0.20126.16343" />
</packages>
现在,当发布“update package Common.WebApi”时,我们得到错误:
更新包:“OPF.Common.WebApi”未安装在任何项目中。更新失败
为了解决这个问题,我从packages文件夹中删除了旧的包“Common.WebApi.1.0.0.109”,然后重新运行该命令,该命令就可以工作了
显而易见的问题是:为什么我的packages文件夹中有一个旧包?这种情况发生在我们身上,因为我们没有将自己的包提交给源代码管理。相反,我们使用的方法如下所述:
“旧包问题”出现在这种情况下:
1.开发人员A更新包并将package.config提交给源代码管理
2.开发人员B从源代码管理获取最新版本并接收更新的package.config
3.开发人员B构建项目,并在其软件包文件夹中创建新软件包
4.Nuget不会从他的packages文件夹中删除开发人员B的旧包,因此开发人员B现在在他的packages文件夹中既有旧包也有新包,但在package.config中只有对新版本的引用
在我看来,Nuget似乎并不希望packages文件夹中有多个版本的包,当您尝试更新[在packages文件夹中]有多个版本的包时,会感到困惑,即使您仅从package.config中引用了一个包。另一种情况是:
未还原包(例如使用ReSharper 2016.2版本)
尝试在/packages中不存在有问题的包版本时进行更新/
要修复此问题,请以某种方式运行还原包My/packages/repositories.config没有对错误中命名的项目的packages.config的引用。我最近向这个项目添加了packages.config,而repositories.config没有签出并且是只读的,因此没有更新以添加引用
我手动编辑了repositories.config以将路径添加到新的packages.config
为了避免上述版本冲突,我还临时删除了respositories.config中的所有其他条目。我还备份/删除了/packages/下的所有文件夹,只保留repositories.config。(关闭VS以避免任何文件打开/锁定冲突)
然后我重新打开了解决方案,并为该项目运行了updatepackage-Reinstall命令,结果成功了。然后,我将彼此项目的packages.config路径添加回repositories.config。我还比较了每个packages.config,以确保在多个项目引用它们时使用相同版本的包。在同一文件夹中是否有多个解决方案共享一个packages文件夹?是否将包提交到源代码管理?否。我们不会在解决方案之间共享packages文件夹,也不会将有问题的包提交到源代码管理。然而,这不再是一个问题。我刚刚删除了所有有问题的包的旧文件夹,它又开始工作了。我想我可能在包文件夹中安装了一个与package.config中指定的版本不同的版本(因为我们没有签入它们),也许这有什么要说的?听起来这就是问题所在。顺便说一句,这是怎么发生的?我们已经建立了teamcity来构建我们自己的nuget软件包,并将它们存储在文件共享中。当我们安装自己的nuget软件包时,我们不会将这些软件包提交给源代码管理,因为我们控制着这些软件包。我猜我做了一个“获取最新版本”-->new package.config,然后在构建之前尝试更新。如果我做了一个构建,它可能已经工作了,因为我们正在使用NuGetPowerTools在构建中安装软件包,如David Ebbo所述:。无论哪种方式,错误消息都有点错误。长话短说:确保packages
文件夹中没有未使用的软件包版本。删除这些修复了问题。与您的情况类似-我下载了4次vsix文件,并附加了名称(1)、(2)和(3)。一旦删除并留下一个名为NuGet.Tools.vsix的文件,它就工作了。(我相信当您尝试更新nugget时,如果出现错误,您将无法再从nugget安装它。至少这是我的经验。相同。感谢上帝提供了源代码管理。我删除了\packages fol的内容。)