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

引用.NET Framework 4.7.2的.NET 5项目Release下dotnet publish失败

问题根因

报错是因为 Microsoft.Bcl.Build 是面向 .NET Framework 的旧版 NuGet 包,它的 EnsureBindingRedirects 构建任务依赖 .NET Framework 专属的 Microsoft.Build.Utilities.v4.0 程序集。dotnet cli 自带的是跨平台 .NET 版 MSBuild,不包含这个 Framework 专属程序集,而 Visual Studio 使用的是完整 .NET Framework 版 MSBuild,所以 VS 构建正常、dotnet cli 构建失败。
省略 configuration 参数时默认走 Debug 配置,你的项目 Debug 配置未触发绑定重定向逻辑,所以可以正常构建。

解决方案(按优先级从高到低)

  • 方案1:使用 Visual Studio 配套的 MSBuild 执行发布
    直接用 VS 自带的 MSBuild 代替 dotnet cli 执行发布,兼容性最好,不需要修改项目代码,命令如下:
    "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" .\MyProject.csproj /t:Publish /p:RuntimeIdentifier=win10-x64 /p:SelfContained=true /p:Configuration=Release
    
    注意修改 MSBuild 路径为你本地 VS 实际安装路径,2019 版路径类似 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe
  • 方案2:禁用旧版绑定重定向任务
    如果要继续使用 dotnet cli 发布,可以在 .NET 5 项目的 .csproj 文件的 <PropertyGroup> 节点中添加以下配置,禁用报错的构建任务:
    <SkipValidatePackageReferences>true</SkipValidatePackageReferences>
    <EnsureBindingRedirectsEnabled>false</EnsureBindingRedirectsEnabled>
    
    .NET 5+ 已经自带了依赖绑定逻辑,不需要旧版 Microsoft.Bcl.Build 的绑定重定向功能,禁用后不会影响项目运行。
  • 方案3:移除旧版 BCL 包引用
    检查所有被引用的 .NET Framework 4.7.2 项目,卸载其中的 Microsoft.Bcl.Build、Microsoft.Bcl 系列 NuGet 包。.NET Framework 4.7.2 已经内置了这些包提供的所有功能,不需要额外引用,移除后不会触发对应的构建任务。

内容的提问来源于stack exchange,提问作者Don Chambers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:36:07