持续警告:“多个软件包卸载失败。”

问题描述 投票:0回答:6

我在晚餐时收到一条警告消息,但现在不会离开。

多个软件包卸载失败。重新启动 Visual Studio 以完成该过程。

但是不幸的是,重新启动 Visual Studio 没有任何效果 - 警告仍然存在。

我尝试过清理解决方案和项目;我的所有项目的装配参考都完好无损。我还发出了

Update-Package -Reinstall
命令——成功了——但没有效果。

我该如何解决这个问题?

visual-studio-2015 nuget package-managers
6个回答
10
投票

我相信这可能是由文件资源管理器文件夹锁定引起的。

我后来收到了类似的警告,这次是针对特定的包裹;因为我现在知道它是哪个包,所以我可以使用 Lock Hunter 来发现它没有被删除的原因。

我关闭了文件资源管理器,重新启动了 VS,警告不再出现。最初的警告(本次问答的主题)在第二天注销并重新登录 Windows 后就消失了。


7
投票

我尝试以各种不同的方式重置包文件夹的权限。重置所有者,重置所有子权限,将我的用户帐户添加到完全控制的权限等...尝试终止资源管理器进程以释放文件上的锁定。

这些都不起作用。

所做的工作是删除包文件夹的全部内容(首先进行备份),并让 Visual Studio 在下次加载时恢复所有包。


4
投票

对我来说,这是软件包文件夹中的权限问题。使用 PS 脚本确定文件是否被锁定或存在其他错误(例如访问被拒绝);更改权限并重新启动 Visual Studio。后来一切都很好。

这里是使用的PS脚本: 检查目录中的锁定文件并找到锁定应用程序

更改了 gci 命令以包含 -Recurse。


4
投票

就我而言,这是由于受源代码控制的文件未检出,因此无法删除/更新..

如果您查看“输出”窗口,然后选择“包管理器”,那么它将向您显示问题文件的列表,然后可以在 TFS/源代码管理中手动检出这些文件。


1
投票

就我而言,我同时在多个解决方案中打开一个共享项目。关闭具有共享项目的另一个 Visual Studio 解决了该问题。


0
投票

我一直收到此消息,但找不到锁定文件夹内容的内容。 然而,Windows 命令行上的以下一行代码相当简单地为我解决了这个问题:

for %i in (c:\mypath\myproject\packages\*.deleteme) do rmdir /q /s %~pi%~ni & del %i

其工作原理是找到所有

.deleteme
文件,删除匹配的文件夹,然后删除
.deleteme
文件本身。即使在非管理员命令行上,这似乎也没有任何权限或锁定问题。

首先看看这会做什么:

for %i in (c:\mypath\myproject\packages\*.deleteme) do @echo rmdir /q /s %~pi%~ni & @echo del %i

导致,例如:

rmdir /q /s \mypath\myproject\packages\JsonSubTypes.2.0.1
del c:\mypath\myproject\packages\JsonSubTypes.2.0.1.deleteme
rmdir /q /s \mypath\myproject\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0
del c:\mypath\myproject\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0.deleteme

一个简单的可重用解决方案是将其构建到一个带有参数的批处理文件中,记住将

%
符号加倍:

@echo off
for %%i in (%%1\*.deleteme) do echo rmdir /q /s %%~pi%%~ni & echo del %%i

将其保存在解决方案文件夹中,然后将包文件夹拖放到其上。

使用 Command Task Runner 扩展之类的工具也可以轻松实现自动化。

© www.soinside.com 2019 - 2024. All rights reserved.