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

nuget.dgspec.json文件作用及指定nuget restore目标Runtime版本方法咨询

nuget.dgspec.json 文件的作用

nuget.dgspec.json 是 NuGet 执行 restore 操作时生成的临时中间文件,核心作用如下:

  • 存储项目依赖解析的关键规范信息,包括目标框架、依赖包版本约束、已梳理完成的依赖关系图
  • 作为后续 restore 或 build 步骤的参考依据,保证依赖处理的一致性
  • 属于自动生成的临时产物,手动修改无效,下次执行 restore 会被重新生成覆盖
指定 NuGet Restore 目标 Runtime 版本的最佳方式

针对本地仓库隔离特定版本导致 restore 失败的问题,以下是几种可靠的指定 Runtime 版本的方法:

1. 项目文件内直接配置

在项目的 .csproj 或 .vbproj 文件的 <PropertyGroup> 节点中,添加明确的运行时版本指定:

<PropertyGroup>
  <TargetFramework>net6.0</TargetFramework>
  <!-- 指定具体的 Runtime 版本 -->
  <RuntimeFrameworkVersion>6.0.10</RuntimeFrameworkVersion>
</PropertyGroup>

该配置优先级最高,会强制 NuGet 拉取指定版本的 .NET Runtime。

2. 用 global.json 统一管控解决方案版本

在解决方案根目录创建 global.json 文件,限制 SDK 和 Runtime 版本并禁用自动升级:

{
  "sdk": {
    "version": "6.0.10",
    "rollForward": "disable"
  }
}

rollForward: disable 会阻止 .NET 自动升级到同主版本下的更高小版本,确保始终使用指定版本。

3. 通过 NuGet.config 约束包版本范围

在 NuGet.config 文件中添加包版本约束,限制 Microsoft.NETCore.App 包的可用版本范围:

<configuration>
  <packageSources>
    <!-- 保留现有源配置 -->
  </packageSources>
  <packageVersionConstraints>
    <!-- 仅允许 6.0.0 至 6.0.10 之间的版本 -->
    <add key="Microsoft.NETCore.App" version="[6.0.0,6.0.10]" />
  </packageVersionConstraints>
</configuration>

适合需要在多个项目中统一约束版本的场景。

4. 命令行参数临时指定

执行 restore 命令时直接传入版本参数:

  • 使用 NuGet CLI:
    nuget restore -RuntimeFrameworkVersion 6.0.10
    
  • 使用 .NET CLI:
    dotnet restore --runtime-framework-version 6.0.10
    

适合临时测试或单次执行的场景。

为何会持续拉取 6.0.18?

默认情况下,.NET 的 rollForward 策略为 Minor,会自动选择同主版本(6.0.x)下的最高可用小版本。即使本地仓库隔离了该包,只要存在 6.0.18 的元数据,NuGet 仍会尝试拉取。通过上述方法修改版本约束或禁用自动升级,即可解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:35:10