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

如何在global.json中同时固定配置多个版本的.NET SDK

核心结论

单个global.json做不到同时固定两个跨大版本的.NET SDK。这个文件的SDK选择规则对所在目录及所有子目录全局生效,最终只会匹配出一个符合规则的SDK版本供目录下所有项目使用,没法在同一个配置文件里给不同项目指定不同的SDK版本。

混合版本项目的配置方案

利用global.json的就近匹配规则,分目录放配置文件就能实现不同项目锁定对应SDK版本的效果,操作很简单:

  • 先按项目的目标框架拆目录:所有.NET 6项目放仓库根目录层级,所有.NET 5项目统一归到一个单独的子目录里
  • 仓库根目录放一份global.json,配置锁定6.0.300版本SDK,覆盖所有根目录下的.NET 6项目
  • 在存.NET 5项目的子目录里再放一份global.json,配置锁定5.0.201版本SDK,这份配置优先级比上层目录的高,只会作用于子目录下的.NET 5项目

对应的目录结构参考:

your-repo/
├── global.json       # 配置SDK版本为6.0.300,rollForward规则按需设置
├── Net6Service/
├── Net6WebApp/
└── Net5Legacy/       # 所有.NET5项目都放在这个目录下
    ├── global.json   # 配置SDK版本为5.0.201,优先级高于根目录配置
    ├── Net5OldService/
    └── Net5OldWeb/

.NET SDK查找global.json的逻辑是:从执行dotnet命令的当前工作目录开始,逐级往上找配置文件,离当前目录最近的global.json优先级最高,会覆盖所有上层目录的SDK版本设置。

最后补个实用提示:如果你的项目没有强依赖5.0.201版本的专属构建特性或者特定bug修复,同是.NET 5主版本的高版本SDK完全可以正常编译目标框架为.NET 5的项目,不会有兼容性问题,没必要刻意锁定小版本。


内容的提问来源于stack exchange,提问作者LA.27

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:42:27