You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.7.2项目GitHub Action执行nuget restore报错咨询

问题解答

报错原因确认

  • 缺少packages.config是本次报错的核心原因。.NET Framework 4.7.2默认采用packages.config作为NuGet包管理格式,你在Rider中添加包时未生成该文件,说明你的项目实际使用了PackageReference格式,但未在项目/解决方案层面声明包管理规则,低版本NuGet CLI无法自动识别包引用类型,因此无法定位还原目录。
  • 其余.NET Framework 4.8.x项目可正常执行还原,是因为4.8版本对PackageReference格式的原生适配更完善,NuGet CLI可自动识别包管理格式,不需要额外配置。

NuGet Restore参数配置方案

你可以根据自己的执行场景选择配置,以下配置均匹配你现有csproj中HintPath指向上级目录packages文件夹的规则:

方案1:直接指定还原目录参数

执行restore命令时添加-PackagesDirectory参数,路径按你的执行工作目录调整,保证和csproj的HintPath相对路径匹配即可,示例命令(在解决方案根目录执行):

nuget restore 你的项目名.sln -PackagesDirectory packages

如果是在GitHub Action中配置,示例步骤如下:

- name: 执行NuGet还原
  run: nuget restore YourSolution.sln -PackagesDirectory packages
  working-directory: ./src # 替换为你的解决方案在仓库中的实际相对路径

方案2:指定解决方案目录参数

如果你不想硬编码包目录路径,可添加-SolutionDirectory参数指定解决方案根目录,NuGet会自动在该目录下生成packages文件夹,示例命令:

nuget restore 你的项目名.sln -SolutionDirectory ./

永久修复方案(无需额外传参)

在解决方案根目录新增nuget.config文件,提交到仓库即可让NuGet自动识别还原路径,文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="packages" />
  </config>
</configuration>

如果你想彻底兼容PackageReference格式无需packages.config,可在项目csproj的首个PropertyGroup节点下添加配置:

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

内容的提问来源于stack exchange,提问作者Stuart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:24:04