如何使用dotnet CLI构建.NET Framework 4.8应用并解决CS0246报错
核心原因
- dotnet CLI 原生仅支持编译SDK风格的.NET项目,你当前的.NET Framework 4.8项目大概率是传统非SDK格式的csproj,搭配
packages.config管理NuGet依赖,dotnet CLI无法解析这类项目的程序集引用、NuGet依赖路径 - 你之前安装的3.1、5.0都是.NET Core/.NET 5+ SDK,没有自带.NET Framework 4.8的编译引用程序集,且重新安装.NET Framework 4.8运行时无效,需要安装对应开发人员包
解决方案
方案一:使用MSBuild编译(无需修改项目,成本最低)
Visual Studio编译使用的是自带的MSBuild工具链,你可以直接调用MSBuild完成命令行编译:
- 找到对应VS版本的MSBuild路径,默认路径参考:
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe,可以将该路径加入系统环境变量方便调用 - 执行依赖还原:
- 若项目用
packages.config管理依赖,先运行nuget restore 你的解决方案.sln - 若项目已经是SDK格式,运行
msbuild /t:Restore 你的解决方案.sln
- 若项目用
- 执行编译命令:
msbuild 你的解决方案.sln /p:Configuration=Release /p:Platform="Any CPU"
方案二:改造为SDK风格项目(适合长期维护的项目)
将传统csproj改造为SDK格式后即可直接用dotnet CLI编译:
- 替换原有csproj的全部内容为如下基础结构,根据项目类型调整属性:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net48</TargetFramework> <!-- 可执行程序填Exe,类库填Library --> <OutputType>Exe</OutputType> </PropertyGroup> <!-- 在这里添加所有NuGet依赖,示例: --> <ItemGroup> <PackageReference Include="log4net" Version="2.0.15" /> </ItemGroup> </Project>
- 删除项目根目录的
packages.config文件 - 执行
dotnet build即可正常编译
方案三:安装.NET Framework 4.8开发人员包
如果你已经是SDK格式的.NET Framework 4.8项目,只需要安装开发人员包即可让dotnet CLI识别框架:
- 下载安装「Microsoft .NET Framework 4.8 Developer Pack」,安装完成后重新执行
dotnet build即可解决引用报错
内容的提问来源于stack exchange,提问作者Vringar
相关产品推荐
相关产品推荐

