Visual Studio 2017构建项目时Nuget找不到包操作无效求助
问题解决步骤
方案1:修复损坏的全局NuGet Fallback缓存
错误B明确指向C:\Program Files\dotnet\sdk\NuGetFallbackFolder路径下的包元数据损坏,这是SDK自带的全局包缓存,损坏后会导致所有依赖本地缓存的还原操作失败:
- 关闭所有Visual Studio窗口,打开任务管理器结束所有
dotnet.exe、msbuild.exe相关后台进程 - 直接删除整个
C:\Program Files\dotnet\sdk\NuGetFallbackFolder文件夹,该文件夹为SDK安装时生成的缓存目录,删除不会影响系统运行 - 进入控制面板-程序和功能,卸载所有版本的.NET Core 2.1 SDK和运行时
- 重启电脑后重新安装对应版本的.NET Core 2.1.526 SDK,安装完成后会自动重新生成完整的NuGetFallbackFolder目录
方案2:对齐项目包引用版本
你当前csproj中Microsoft.AspNetCore.App未指定版本,可能会触发版本解析冲突,修改配置段如下:
<ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" /> <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" /> <PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="2.1.1" /> <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" /> </ItemGroup>
手动指定主包版本和其他相关包版本对齐,避免版本不一致导致的依赖缺失。
方案3:开启系统长路径支持
初始报错明确提到可能存在最大路径长度限制问题,开启Windows长路径支持可以避免包还原时因为路径过长被截断导致文件缺失:
- 按下
Win+R输入regedit打开注册表编辑器 - 定位到路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem - 找到名为
LongPathsEnabled的DWORD(32位)值,将数值数据修改为1,如果不存在则手动新建该值再修改 - 重启电脑后生效
方案4:临时禁用本地缓存源测试
如果上述方案仍无效,可以先禁用本地缓存源验证问题根源:
- 打开Visual Studio的NuGet包管理器设置,进入包源配置页
- 取消勾选所有本地离线源(包括
Microsoft Visual Studio Offline Packages和dotnet fallback相关本地源),仅保留nuget.org官方源 - 重新执行
dotnet restore命令验证还原是否正常
内容的提问来源于stack exchange,提问作者John Gilmer
相关产品推荐
相关产品推荐

