无法为 VS2015 升级 nuget

failed to upgrade nuget for VS2015

我正在安装一个大型 C# 项目,我被告知首先将 nuget 从 3.3 升级到 3.4 或更高版本。

我下载了 nuget 扩展(VS 2015 VSIX v3.4.4)并尝试安装它,我得到了这个:

8/7/2017 2:04:32 PM - Upgrading 'NuGet Package Manager for Visual Studio 2015', version 3.3.0.167 to version 3.4.4.1321.
8/7/2017 2:04:41 PM - Install Error : System.IO.IOException: The process cannot access the file because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)

我尝试了另一种方式 - 从 VS2015 中,工具 -> 扩展和更新,找到现有的 nuget 并尝试先卸载它,我得到:

The process cannot access the file because it is being used by another process.

我抽出 "Process explorer" 发现有两个进程使用了​​ nuget:chrome 和 devenv.exe。 devenv 是一个带有 VS2015 实例的进程。无论如何我退出了 VS2015,甚至 chrome,没有帮助,与安装扩展时的错误消息相同。

我尝试的其他事情:

我发现正在使用的nuget在"C:\Program Files (x86)\NuGet",我用nuget.exe的新版本替换了现有的,以及C:\Program Files下的nuget.tools( x86)\NuGet\Visual Studio 2015,然后我再次启动 VS 仍然得到相同的消息

The process cannot access the file because it is being used by another process.

我删除了项目下的 packages 文件夹以及 /.nuget 下的 packages 文件夹,没有帮助。

我用谷歌搜索并找到了这个 link 但它也没有帮助解决问题。我承认我已经无计可施了。

failed to upgrade nuget for VS2015

此问题应该是核心 visual studio 可扩展性中的错误或问题。这不是特定于 NuGet 的问题。它通常与 防病毒或加密服务 等相关。我想在这里提供一些故障排除:

  • 以管理员身份登录您的计算机并使用管理员启动Visual Studio。
  • 检查您的计算机是否安装了 McAfee Endpoint Encryption full-disk encryption product,而不是防病毒软件。如果是,您应该从全盘加密中排除 devenv.exeVSIXInstaller.exe

    这是一个注册表片段,告诉 McAfee Endpoint Encryption 排除这些文件。完成后,重新启动 PC:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MfeEEFF\ExemptedProcesses] "1"="devenv.exe" "2"="VSIXInstaller.exe"

    有关详细信息,请查看 上的 SO。

  • 关闭 visual studio 并删除 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions 中包含 Nuget

    副本的所有文件夹
    1. 关闭Visual Studio的所有实例。

    2. 转到全局 Visual Studio 扩展文件夹。 NuGet 不会安装在您的每个用户文件夹中;相反,您会在程序文件中看到它。类似于:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions

    3. 在该文件夹中查找。你会看到很多随机命名的文件夹,比如“sdjfksiov.djd”等等。其中大部分(如果不是全部)都是 NuGet。您需要了解哪些是 NuGet,哪些不是,特别是如果您安装了其他扩展。 (你可以判断它是否是 NuGet,因为它里面有一堆 NuGet.*.dll 文件。如果你没有看到里面有 NuGet 的东西,你会想要保留它。)

    4. 将该扩展文件夹重命名为:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions_RENAMED

    5. 直接从 Visual Studio 扩展库下载 NuGet。

    6. 执行刚刚下载的 NuGet.Tools.vsix 文件。不要通过 Visual Studio 来完成。只需双击 .vsix 文件即可安装。

    7. NuGet 应该会成功安装。作为该安装的一部分,它将再次创建扩展文件夹,因此您将再次看到 C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions

    8. 打开重命名的扩展文件夹并将所有非 NuGet 扩展移动到新的扩展文件夹中。

    9. 现在打开Visual Studio。您应该会看到新版本的 NuGet 已安装并正在运行。

    10. 您可以在确认一切正常后删除重命名的 Extensions 文件夹

希望能对您有所帮助。