一个或多个软件包无法完全卸载

我有一个ASP.NET MVC 4应用程序。 我使用NuGet来更新创build应用程序时安装的所有NuGet包。 其中一个包是Microsoft.Bcl.Build

更新这些之后,NuGet在窗口底部显示以下消息: NuGet错误显示“一个或多个软件包无法完全卸载:Microsoft.Bcl.Build.1.0.7。重新启动Visual Studio以完成卸载”。

我已经重新启动了几次Visual Studio,但消息仍然存在。 当我检查已安装的软件包时,确实出现软件包的更新版本(1.0.8)。

我怎样才能解决这个问题?

看看~/packages是否有*.deleteme文件并删除它们,而不是删除~/packages所有文件。 然后重新启动Visual Studio。

我相信这个问题是由文件系统级别的只读或不可访问引起的。

软件包在源代码pipe理下

临时解决方法(未经testing)

在告诉NuGet重新启动Visual Studio以删除软件包之前,检出整个软件包文件夹。

永久的变通

我发现这可以通过从源代码控制中删除软件包而使用NuGet软件包恢复来永久解决。

不受源代码pipe理的软件包

临时解决scheme

我通过从解决scheme的软件包文件夹中删除引用相关软件包的所有文件来解决此问题。 具体来说,这些是:

  1. 文件夹: Microsoft.Bcl.Build.1.0.7
  2. 文件: Microsoft.Bcl.Build.1.0.7.deleteme

在我的情况下,相关的包文件夹保留在~\packages ,尽pipe它们是空的。 我删除了文件夹并重新启动了Visual Studio,这个警告消失了。

1)删除整个~\packages文件夹。

2)重新启动VS

3)去Manage NuGet PackagesRestore

我刚刚删除了我的解决scheme文件夹中的Packages文件夹中有错误的每个包的文件夹,也删除了.deleteme文件,一切工作正常!

我会同意,当你的包文件夹在源代码pipe理下时,可能会发生这种情况。 如果你喜欢在那里,而不是删除绑定,你可以检查一切,用NuGet包pipe理器删除包,然后在病房后检查。

根据我的经验,我在这个主题上find了我的答案,但是结合了上面几个不同的答案,所以我想我会分享我发现的东西。

我与“Microsoft.Bcl.Build”的原始海报有完全相同的问题。 我一直在尝试更新使用NuGet的其他function的引用,并有一些更新(兼容性,然后回滚)的问题。 在这个NuGet失败后,我开始得到这个错误。

我最初使用选定的答案和Jedidja的答案,并能够得到这个工作,但它只是部分解决了我的问题。 它确实修复了VS重新启动错误,但它导致了TFS的下游问题,因为我不能再检查项目,因为它期望的是“* .deleteme”文件。 这让我思考,所以我做了一些testing。 当我从回收站中恢复文件时,我又开始重新启动错误。

在这里,我偏离了张贴的答案,并得到了我的问题的完整解决scheme的版本。

当我这次检查到TFS时,项目检查了所有内容(在删除了“* .deleteme”文件后,所有项目都使用NuGet更新)。 一旦它检查了一切,我注意到该文件仍然在登记,所以我再次检查解决scheme,TFS接受该文件,但它是作为删除….假设它在第一次检查,然后VS自动删除它需要第二次入住。 无论如何….在最后的待办事项变更登记后,文件已经消失,VS不再抱怨需要重新启动。 我不能肯定地说,因为问题已经消失了,但是如果在删除文件之前检查了代码,可能会解决问题而无需手动文件处理。

** 大家好。**

我这样解决这个问题。

  1. 如果你有源代码控制,以pipe理员身份运行vs(这很重要)

  2. 在解决scheme包 – >删除有关包的东西。 示例 – >我删除了所有的entity framework版本文件夹。

  3. 重新启动vs

  4. 打开解决scheme和解决scheme右键单击 – >pipe理该解决scheme的nuget包。 你会看到恢复button:)恢复

就这些。

如果您使用Entity Framework 6,则可以安装NuGet包“EntityFramework.SqlServerCompact”。

这使我能够使用2013和MVC5项目模板附带的标准ASP.NET身份工具。