为何更换文件夹后无法使用NuGet包?.NET Core项目启动失败求助
project.assets.json的问题 我之前也碰到过一模一样的情况,这种问题大多是路径变更引发的缓存残留或项目引用异常,给你几个按优先级排序的解决步骤,挨个试试:
清理+重新生成解决方案
先右键解决方案,选择清理解决方案,完成后再选重新生成解决方案。旧路径下的构建缓存很可能干扰了新路径的文件生成,清理后能强制VS从头构建所有必要文件,包括project.assets.json。手动删除
obj和bin文件夹
找到你的项目根目录,直接删掉里面的obj和bin两个文件夹,再回到VS里重新构建项目。这两个文件夹里的缓存文件会因为路径变更失效,删除后VS会根据当前路径重新生成正确的文件结构。用命令行强制执行NuGet还原
打开VS的工具->NuGet包管理器->包管理器控制台,输入以下命令:dotnet restore这个命令比VS界面的还原功能更彻底,能强制重新生成
project.assets.json文件,解决界面还原可能遗漏的问题。检查项目文件的硬编码路径
右键项目选择编辑.csproj文件,排查里面是否有硬编码的旧路径引用。比如有些PackageReference的HintPath可能不小心用了绝对路径,要改成相对路径或者修正为当前文件夹的路径。举个例子,如果看到<HintPath>D:\OldFolder\package.dll</HintPath>,就改成对应新路径的内容。重置VS组件缓存
如果上面的方法都没用,试试重置VS缓存:关闭VS,删除以下路径的缓存文件夹(替换成你的用户名):C:\Users\你的用户名\AppData\Local\Microsoft\VisualStudio\15.0_*\ComponentModelCache重新打开VS后再加载项目,大概率能解决缓存引发的异常。
另外提醒下:尽量避免用含中文、空格或特殊字符的文件夹路径,部分.NET Core工具对非英文路径的兼容性不太稳定,换成纯英文+数字的路径能减少这类问题。
内容的提问来源于stack exchange,提问作者Adam Mrozek

