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

标签 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 包已定义,而且确实如此。有什么线索吗?

最佳答案

我正在与 Tomas 从事同一个项目,我试图找出这个问题何时发生以及为什么。当我们在包文件夹中有一个或多个旧版本的包并尝试发出“update-package”命令时,似乎会发生这种情况。

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

包文件夹:

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”未安装在任何项目中。更新失败。

为了解决这个问题,我从包文件夹中删除了旧包“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 不会从开发人员 B 的包文件夹中删除旧包,因此开发人员 B 现在的包文件夹中既有旧包又有新包,但只有 package.config 中对新版本的引用。

对我来说,Nuget 似乎并不期望软件包文件夹中存在多个版本的软件包,并且当您尝试更新 [在软件包文件夹中] 具有多个版本的软件包时,Nuget 会感到困惑,即使您仅引用 package.config 中的单个包。

关于Nuget Update-Package 无法识别已安装的包 --> 更新失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253763/

相关文章:

powershell - MSBUILD是否可以在不重新启动Visual Studio的情况下接收新的 'user'级别的环境变量?

.net - NuGet 限制包的最大主要版本

version-control - NuGet 和版本控制 - 如何处理目录文件夹

.net-core - Nuget 包创建不包括引用的 dll

nuget - 将 NuGet 包推送到 Artifactory 本地 repo 子文件夹

.net - NuGet 更新和条件引用

nuget - 管理 Nuget 包的在线部分中 nuget.org 和 "Microsoft and .NET"有什么不同

.net - NuGet:包括 .pdb 文件并排除 "Content"文件夹

visual-studio - 如何在Visual Studio中使用OpenCV Nuget包发布我的C#项目?

c# - 在 powershell 中使用 nuget 外部工具