在GitHub Actions构建.NET 8.0时出现本地未复现的NETSDK1045错误
问题场景
本地将项目从.NET 6.0升级至.NET 8.0后,执行dotnet restore无异常,但提交PR后GitHub Actions构建时触发以下错误:
/home/runner/.dotnet/sdk/7.0.408/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(160,5):
error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0.
Either target .NET 7.0 or lower, or use a version of the .NET SDK that supports .NET 8.0. Download the .NET SDK from https://aka.ms/dotnet/download [/home/.../Client.csproj]
本地环境dotnet --version显示为8.0.24,.NET 8.0 SDK已正确安装。
问题原因
GitHub Actions默认runner环境未预装.NET 8.0 SDK,当前使用的是.NET 7.0 SDK版本,无法识别.NET 8.0的目标框架配置。
解决方案
更新GitHub Actions工作流,指定安装.NET 8.0 SDK
在项目的.github/workflows目录下的工作流YAML文件中,添加actions/setup-dotnet步骤,明确指定.NET 8.0 SDK版本:steps: - name: 安装.NET 8.0 SDK uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' # 自动安装最新稳定版.NET 8.0 SDK - name: 还原依赖 run: dotnet restore - name: 构建项目 run: dotnet build --no-restore若项目需兼容多版本.NET,可同时指定多个版本:
with: dotnet-version: | 6.0.x 8.0.x确认项目文件的目标框架配置
检查.csproj文件,确保TargetFramework节点已正确设置为net8.0:<PropertyGroup> <TargetFramework>net8.0</TargetFramework> </PropertyGroup>
内容的提问来源于stack exchange,提问作者Cjmaret

