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

Tom*_*son 41 nuget

我在VS项目中安装了一个NuGet包(我们在项目中开发).当我Update-Package在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], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.UpdatePackageCommand
Run Code Online (Sandbox Code Playgroud)

我已经检查了package.config文件以确保定义了NuGet包,它是.有线索吗?

小智 49

我正在和Tomas一样的项目工作,我试图弄清楚这个问题何时发生以及为什么.当package文件夹中有一个或多个旧版本的软件包并尝试发出'update-package'命令时,似乎会发生这种情况.

在发出命令之前,我们的packages文件夹和配置如下所示:

包文件夹:

Common.WebApi.1.0.0.109
Common.WebApi.1.0.0.110
Run Code Online (Sandbox Code Playgroud)

包配置:

<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>
Run Code Online (Sandbox Code Playgroud)

现在,当发出'update-package Common.WebApi'时,我们得到错误:
Update-Package:'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构建项目和新包在他的packages文件夹中创建
4.Nuget不会从他的packages文件夹中删除开发人员B的旧包,因此Developer B现在在他的packages文件夹中同时包含旧包和新包,但是只有package.config到新版本.

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

  • 简而言之:确保`packages`文件夹中没有未使用的软件包版本.删除这些修复了问题. (6认同)

Dan*_*eny 5

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