2011-08-31 79 views
41

我在VS项目中安装了一个NuGet包(我们已经在项目中开发)。当我上的NuGet项目运行Update-Package我得到: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

您是否在共享软件包文件夹的同一文件夹中有多个解决方案? 你是否将包交给源代码管理? – davidfowl

+0

否和否。我们不在解决方案之间共享软件包文件夹,我们也没有将相关软件包提交给源代码控制。但是,这不再是一个问题。我刚刚删除了有问题软件包的所有旧文件夹,并开始重新开始工作。 –

+0

我想我可能有不同的版本安装在packages文件夹中(因为我们没有检查它们),与package.config中指定的版本相比,可能有什么要说的吗? –

回答

49

我正在与Tomas一起开发同一个项目,我试图弄清楚何时发生这个问题以及为什么。当我们在packages文件夹中有一个或多个旧版本的软件包并尝试发出'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> 

现在,发出“更新包时的常见.WebApi'我们得到错误:
更新包:'OPF.Common.WebApi'未安装在任何项目中。更新失败。

要修复它,我从软件包文件夹中删除旧软件包'Common.WebApi.1.0.0.109',然后重新运行然后工作的命令。

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

的“老包问题”发生在这种情况:
1.开发一个更新包并提交package.config源代码控制
2。开发人员B从源代码控制获取最新版本并接收更新后的包package.config
3.开发人员B构建项目,并在其包文件夹中创建新包
4. Nuget不会从包中删除开发人员B的旧包因此开发者B现在在他的软件包文件夹中既有旧软件包又有新软件包,但只有package.config中的引用对新版本有所帮助。

对我来说,似乎Nuget并不希望在packages文件夹中有多个版本的软件包,并且在尝试更新包含多个版本的软件包时会感到困惑尽管你只能从package.config中引用一个包。

+6

长话短说:确保'packages'文件夹中没有未使用的软件包版本,删除这些修复了问题。 – jgauffin

5

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

+0

听起来像我的场景。 –

+0

类似的情况下你的 - 我有4次下载的vsix文件和名称被追加(1),(2)和(3)一旦我删除并留下一个名为NuGet.Tools.vsix然后它的工作。 (我相信当你尝试更新金块并失败时出现错误,那么你不能再从金块安装它,至少那是我的经验 – ramnz

+0

同样感谢上帝的源代码管理 – Casey

2

下面是如何设法得到最新版本的软件包管理器:

  1. 开始VS2010在管理模式(以管理员身份运行)
  2. 工具>管理器>卸载的NuGet
  3. 重新启动Visual工作室
  4. 安装NuGet

瞧!

希望这会有所帮助。

3

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

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

0

另一种方式可能出现这种情况:

  1. 没有包被恢复(使用ReSharper的2016.2构建例如)
  2. 尝试,而有问题的包的版本更新中不存在/包/

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