我在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
我已经托运了包裹。配置文件以确保定义了NuGet包,并且确实定义了。有线索吗?
我和Tomas在同一个项目上工作,我试图找出这个问题发生的时间和原因。当我们在packages文件夹中有一个或多个旧版本的包并尝试发出'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'我们得到错误:
Update-Package: 'OPF.Common. '没有在任何项目中安装WebApi。更新失败了。
为了解决这个问题,我从packages文件夹中删除了旧的包'Common.WebApi.1.0.0.109',然后重新运行命令。
显而易见的问题是:为什么我的packages文件夹中有一个旧的包?这种情况发生在我们身上是因为我们没有将自己的包提交给源代码管理。相反,我们使用下面描述的方法:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
在这种情况下会出现'old package problem':
1. 开发人员A更新包并提交包。配置到源代码控制
2. 开发人员B从源代码控制获取最新版本,并接收更新后的包。3.开发人员B构建项目,并在他的packages文件夹
中创建新包。4. Nuget不会从他的packages文件夹中删除开发人员B的旧包,所以开发人员B现在在他的packages文件夹中同时拥有旧包和新包,但包中只有一个引用。配置到新版本
对我来说,Nuget似乎不希望在packages文件夹中有多个版本的包,当你试图更新一个有多个版本的包(在packages文件夹中)时,即使你只引用了package.config中的一个包,也会感到困惑。
我最近遇到了一个非常类似的问题——原来是包/存储库。缺少Config(因为我们没有提交packages文件夹)。我在VS中做了一些事情(可能是在项目中添加了一个新包),导致VS重新生成存储库。列出来自所有项目的所有包的配置文件。之后,更新工作正常。
我也遇到了同样的问题。我们没有检入packages文件夹(nuget构建任务下载所有包)。
我解决这个问题的唯一方法是删除packages文件夹,然后重新构建项目。
我是如何获得最新版本的包管理器的:
- 以admin模式启动VS2010(以管理员身份运行)
- Tools> Add in Manager> Uninstall NuGet
- 重启Visual Studio
- 安装NuGet
瞧!
另一种情况:
- 没有恢复包(使用ReSharper 2016.2 Build为例)
- 尝试更新,而问题的包版本不存在/packages/
要修复,以某种方式运行还原包
My/packages/repositories。配置中没有对项目包的引用。错误中指定的配置。我最近添加了这些包裹。配置到这个项目和存储库。Config没有签出并且是只读的,所以没有被更新以添加引用。
我手动编辑了存储库。
为了避免上面提到的版本冲突,我还删除了责任库中的所有其他条目。临时配置。我还备份/删除了/packages/下的所有文件夹,只留下repository .config。(当VS被关闭以避免任何文件打开/锁定冲突)
然后我重新打开解决方案并运行项目的Update-Package - install命令,它成功了。然后我添加了其他项目的包。配置路径返回到repository . Config。我还比较了每个包。配置以确保在多个项目引用包时使用相同版本的包。