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

时间:2011-08-31 07:19:44

标签: nuget

我在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包,确实如此。有线索吗?

6 个答案:

答案 0 :(得分:49)

我正在开发与Tomas相同的项目,我试图弄清楚这个问题何时发生以及原因。当package文件夹中有一个或多个旧版本的软件包并尝试发出'update-package'命令时,似乎会发生这种情况。

在发出命令之前,我们的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”,然后重新运行该命令。

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

在这种情况下会出现“旧包装问题”:
1.开发人员A更新包并将package.config提交给源控件
2.开发人员B从源代码管理中获取最新版本并接收更新的package.config
3.开发人员B构建项目,并在他的包文件夹中创建新包 4. Nuget不会从他的packages文件夹中删除开发人员B的旧包,因此Developer B现在在他的packages文件夹中同时包含旧包和新包,但是package.config中只有一个引用到新版本。

对我来说,似乎Nuget不希望package文件夹中有多个版本的软件包,当你尝试更新一个包含多个版本的软件包[在packages文件夹]时会变得困惑你只引用package.config中的一个包。

答案 1 :(得分:5)

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:2)

以下是我如何设法获得最新版本的软件包管理器:

  1. 以管理员模式启动VS2010(以管理员身份运行)
  2. 工具&gt;添加管理器&gt;卸载NuGet
  3. 重新启动Visual Studio
  4. 安装NuGet
  5. 瞧!

    希望这有帮助。

答案 4 :(得分:0)

另一种可能发生的方式:

  1. 没有正在恢复的软件包(例如,使用ReSharper 2016.2 Build)
  2. 尝试更新,而有问题的软件包版本在/ packages /
  3. 中不存在

    要修复,请以某种方式运行还原包

答案 5 :(得分:0)

我的/packages/repositories.config 没有引用错误中指定的项目的packages.config。我最近在这个项目中添加了 packages.config,而 repositories.config 没有检出并且是只读的,所以没有更新以添加引用。

我手动编辑了 repositories.config 以将路径添加到新的 packages.config。

为了避免上述版本冲突,我还临时删除了 resposuitories.config 中的所有其他条目。我还备份/删除了 /packages/ 下的所有文件夹,只留下了 repositories.config。 (虽然 VS 已关闭以避免任何文件打开/锁定冲突)

然后我重新打开了解决方案并为该项目运行了 Update-Package -Reinstall 命令,它成功了。然后我将彼此项目的packages.config 路径添加回repositories.config。我还比较了每个 packages.config,以确保在多个项目引用它们时使用相同版本的包。