如何在GitHub Actions中安装.NET Framework 4.7.2目标包/SDK?
在GitHub Actions中编译.NET Framework 4.7.2项目的正确配置
你之前的配置问题源于混淆了.NET Framework与.NET Core/.NET SDK的差异:.NET Framework 4.7.2是Windows专属的旧版框架,setup-dotnet Action仅负责安装.NET Core/.NET SDK,无法识别.NET Framework版本;同时Ubuntu环境默认不包含.NET Framework的目标引用程序集,导致编译失败。以下是两种可行的解决方案:
方案一:使用Windows Runner(推荐,最稳定)
Windows环境的GitHub Runner默认预装了包括4.7.2在内的大部分.NET Framework开发包,无需额外手动安装,配置更简单。
修改后的YAML配置:
jobs: build: name: Build .NET Framework 4.7.2 Project runs-on: windows-latest env: DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 DOTNET_NOLOGO: true steps: - uses: actions/checkout@v4 - name: Setup .NET SDK(可选,若项目依赖.NET Core/.NET) uses: actions/setup-dotnet@v4 with: dotnet-version: 8.0.204 - name: Restore NuGet packages run: dotnet restore - name: Build project run: dotnet build --configuration Release --no-restore - name: Run tests(若有测试项目) run: dotnet test --no-restore --configuration Release
说明
- 将
runs-on改为windows-latest,Windows Runner自带.NET Framework 4.7.2的目标引用程序集,满足编译需求。 - 保留.NET 8 SDK配置是为了兼容可能存在的跨框架代码或工具依赖,无相关需求可直接移除该步骤。
dotnet restore和dotnet build命令在Windows环境下可正常处理.NET Framework项目。
方案二:使用Ubuntu Runner(通过Mono编译)
若必须使用Linux环境,可借助Mono提供的.NET Framework兼容编译环境:
修改后的YAML配置:
jobs: build: name: Build .NET Framework 4.7.2 Project on Ubuntu runs-on: ubuntu-latest env: DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 DOTNET_NOLOGO: true steps: - uses: actions/checkout@v4 - name: Install Mono & MSBuild run: sudo apt-get update && sudo apt-get install -y mono-complete msbuild nuget - name: Restore NuGet packages run: nuget restore - name: Build project run: msbuild /p:Configuration=Release /p:TargetFrameworkVersion=v4.7.2 - name: Run tests(根据测试框架调整) run: nunit-console YourTestProject/bin/Release/YourTestProject.dll
说明
- 安装
mono-complete提供.NET Framework兼容运行时,msbuild负责编译,nuget用于恢复依赖。 - 使用
msbuild直接指定目标框架版本进行编译。 - 测试命令需根据项目使用的测试框架调整(如NUnit用
nunit-console,xUnit需对应工具)。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

