Nuget Update-Package无法识别已安装的软件包 – >更新失败

我已经在一个VS项目中安装了一个NuGet包(我们在项目中开发的)。 当我在nuget项目上运行Update-Package时,我得到:

 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 

我已经检查了package.config文件,以确保NuGet包已经定义好了。 任何线索?

我正在和Tomas一起开发同一个项目,我试图弄清楚什么时候出现这个问题,为什么。 当我们在软件包文件夹中有一个或多个旧版本的软件包并尝试发出“update-package”命令时,似乎会发生这种情况。

发出命令之前,我们的包文件夹和configuration如下所示:

包文件夹:

 Common.WebApi.1.0.0.109 Common.WebApi.1.0.0.110 

软件包configuration:

 <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”,然后重新运行这个命令。

显而易见的问题是:为什么我的包文件夹中有一个旧的包? 这发生在我们身上,因为我们没有提交我们自己的包来源控制。 相反,我们使用这里描述的方法: http : //docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

在这种情况下出现“旧包装问题”:
1.开发人员A更新软件包并将package.config提交到源代码控制
2.开发人员B从源代码控制获取最新版本,并接收更新的package.config
3.开发人员B构build项目,并在他的包文件夹中创build新的包
4. Nuget不会从开发包B文件夹中删除开发者B的旧软件包,所以开发者B现在在他的软件包文件夹中既有旧软件包又有新软件包,但只有package.config中的引用才是新版本。

对我来说,似乎Nuget并不期望在软件包文件夹中有多个版本的软件包,并且当你试图更新一个包含多个版本的软件包(在软件包文件夹中),即使你只参考来自package.config的单个包。

我最近有一个非常类似的问题 – 原来是packages / repositories.config丢失了(因为我们没有提交packages文件夹)。 我在VS中做了一些事情(可能会添加一个新的包到一个项目),导致VS重新生成repositories.config文件列出所有项目的所有包。 之后,更新工作正常。

我有同样的问题。 我们没有检查包文件夹(nuget构build任务下载所有包)。

我解决问题的唯一方法是删除包文件夹,然后重build项目。

以下是我如何获得最新版本的包pipe理器:

  1. 以pipe理员身份启动VS2010(以pipe理员身份运行)
  2. 工具>添加pipe理器>卸载NuGet
  3. 重新启动Visual Studio
  4. 安装NuGet

瞧!

希望这可以帮助。

另一种方式可能发生:

  1. 没有包被恢复(例如使用ReSharper 2016.2 Build)
  2. 尝试更新,而相关的软件包版本不存在于/ packages /

要修复,以某种方式运行恢复软件包