VS2022拆分主解决方案项目后NuGet引用无法识别已安装包问题求助
问题根因
原测试项目使用旧式packages.config NuGet管理模式,默认将包存储在解决方案同级的packages目录,项目文件内硬编码了指向该目录的props导入路径。迁移到新解决方案后目录结构变化,相对路径失效;手动转换PackageReference未生效是因为旧的硬编码Import节点未被自动清理,残留配置优先级高于PackageReference的默认规则。
解决步骤
清理项目残留旧配置
卸载测试项目,右键选择「编辑项目文件」,删除所有指向..\packages目录的<Import>、<Target>节点,包含你提到的MSTest.TestAdapter.props导入配置。同时删除项目目录下残留的packages.config文件(如果存在)。强制迁移到PackageReference格式
- 右键新解决方案,选择「管理解决方案的NuGet包」,点击右上角设置图标进入NuGet配置页
- 在「常规」标签下,将默认包管理格式设置为
PackageReference,勾选「允许在首次安装包时选择格式」后保存 - 右键测试项目,选择「将packages.config迁移到PackageReference」,等待VS扫描完成后确认迁移结果无报错即可
验证与兜底配置
重新加载项目后,右键解决方案选择「还原NuGet包」并执行编译。如果仍有报错,可在项目文件的首个<PropertyGroup>节点内添加如下配置,强制指定包读取路径:<RestorePackagesPath>$(UserProfile)\.nuget\packages</RestorePackagesPath>
注意事项
- 检查新解决方案目录下的
nuget.config文件,如有配置<add key="repositoryPath" value="xxx/packages" />的节点,直接删除该配置项 - 清理解决方案和项目目录下的旧
packages文件夹,避免残留文件干扰配置
内容的提问来源于stack exchange,提问作者Gratzy
相关产品推荐
相关产品推荐

