设置TargetFramework=net472仍报错:无法加载netstandard 2.1.0.0程序集
首先明确:.NET Framework 全版本官方仅最高支持到 .NET Standard 2.0,原生不支持 .NET Standard 2.1,你的ASP.NET Web API(.NET Framework 4.7.2)本身确实不需要依赖 .NET Standard 2.1,报错属于配置/构建环节的问题,常见的错误点和修复方案如下:
1. 检查类库的 NuGet 包条件配置是否正确
确认类库 .csproj 中所有 PackageReference 节点都添加了正确的目标框架条件,避免在 net472 编译目标下意外引入依赖 .NET Standard 2.1 的包:
<!-- 正确示例:仅 netstandard2.1 目标下引用对应包 --> <PackageReference Include="Some.NetStandard21.Package" Version="x.x.x" Condition="'$(TargetFramework)' == 'netstandard2.1'" />
如果没有加条件,net472 版本的类库会继承该包的 netstandard2.1 依赖,导致运行时报错。
2. 清理无效的程序集绑定重定向
打开 Web API 项目的 Web.config,检查 <runtime>/<assemblyBinding> 节点下是否存在自动生成的 netstandard 绑定重定向配置:
如果有指向 Version=2.1.0.0 的 netstandard 重定向规则,直接删除该规则即可;如果需要保留 netstandard 适配,将版本改为 2.0.0.0(.NET Framework 4.7.2 支持的最高标准版本)。
3. 清理构建缓存避免版本混用
删除解决方案下所有项目的 bin、obj 文件夹后重新完整构建,构建完成后检查 Web API 输出的 bin 目录:
- 确认引用的多目标类库是 net472 编译版本,不是 netstandard2.1 版本的同名文件
- 确认目录下没有
netstandard.dll2.1.0.0 版本的文件
4. 验证条件编译符号生效状态
确认你使用的 NET472_OR_GREATER 预编译符号在 net472 目标下正常生效,避免符号未生效导致代码中引入了仅 netstandard2.1 支持的API,间接产生 netstandard2.1 依赖。
内容的提问来源于stack exchange,提问作者Tamer Rifai

