我在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包,确实如此。有线索吗?
答案 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)
以下是我如何设法获得最新版本的软件包管理器:
瞧!
希望这有帮助。
答案 4 :(得分:0)
另一种可能发生的方式:
要修复,请以某种方式运行还原包
答案 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,以确保在多个项目引用它们时使用相同版本的包。