项目恢复 NuGet 包失败...:找不到路径的一部分

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

我正在尝试在 Visual Studio (.NET Framework 4.72) 中运行单元测试项目。

项目现在已经成功构建/运行,但是仍然出现NuGet包无法恢复的错误(文件路径实际上是错误的并且不存在)。如何更改为正确的文件路径并告诉 VS 不要查找错误的路径? 错误如下:

项目 Tests_WeatherData 的 NuGet 包还原失败:找不到路径 'C:......\Begin\packages\MSTest.TestAdapter.1.3.2 uild/_common/zh-Hans/Microsoft.VisualStudio 的一部分.TestPlatform.MSTestAdapter.PlatformServices.resources.dll'

感谢您提供有关如何更改文件路径/恢复设置的任何建议。

c# visual-studio unit-testing visual-studio-2022 nuget-package-restore
5个回答
17
投票

这可能是由于您的项目位于嵌套太深的子文件夹中造成的。我认为文件夹路径可能有一些限制,比如 250 个字符或类似的东西。

当我下载带有一些演示项目的 zip 时,我看到了同样的错误,当我解压缩它时,它创建了一个包含许多子文件夹的文件夹。我感兴趣的项目位于子文件夹的深处,当我尝试恢复其 NuGet 包时,我遇到了相同的错误。

我将项目文件夹移至靠近 c:\ 的位置,然后恢复错误就消失了。


9
投票

这对我有用。

  1. 此处下载 nuget.exe。

  2. 将此 nuget.exe 可执行文件复制到包含当前无法构建的解决方案的文件夹。

  3. 确保 LongPathsEnabled 注册表项设置为 1。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled

  4. 打开cmd提示符,导航到上述文件夹位置。运行以下命令。

    c: epos\MySolutionFolder>nuget.exe 恢复

  5. 在 Visual Studio 中构建解决方案。就我而言,我使用的是 VS2019。

帮助我完成这些步骤的链接 - Github-Issue


1
投票

问题可能是 CSPROJ 文件中的文件路径。最常见的原因是项目重组,

packages
的位置发生了变化。

除了 CSPROJ 中的 NUGET 引用之外,CSPROJ 的页脚或 MSTest 适配器条目的标头部分中可能还有一些其他位置。 IE。只需验证所有文件路径(尤其是相对的)都正确并重新加载/重建。


0
投票

更新 Nuget 包后,Visual Studio 在我的待更改列表中包含了新添加的旧版本和更新版本的文件夹。旧版本显然已经不存在了,因为它在 Nuget 更新包时被删除了。我必须手动排除以旧版本号命名的文件夹。


0
投票

解决长路径问题的另一个选项是使用管理员权限从 Powershell 中执行此操作。 (右键单击并选择“以管理员身份运行”)。

  1. 关闭 Visual Studio

  2. 将以下内容粘贴到 Powershell 中:

    新项目属性

    -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem"
    -名称“LongPathsEnabled”
    -Value 1
    -PropertyType DWORD ` -力量

  3. 导航到项目目录并运行以下命令,通过 Powersell 添加 NuGet 包:

    dotnet 添加包

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