Mac-Catalyst环境下MAUI应用编译报错:找不到.NET Framework 4.7.2引用程序集
MAUI Mac-Catalyst构建时.NET Framework 4.7.2引用错误解决办法
先排查可能的根源
- 第三方NuGet包搞的鬼:有些包表面支持.NET 6,但底层偷偷依赖了.NET Framework 4.x,构建时会触发MSBuild去搜索这个不存在的框架。
- 项目文件藏了旧配置:你以为都设成6.0了,但
.csproj里可能有残留的TargetFramework或Reference指向4.7.2,比如条件编译的分支、导入的旧构建脚本。 - 缓存没清干净:dotnet或MSBuild的缓存存了旧配置,导致构建时错误引用旧框架。
- Mac-Catalyst默认配置的坑:构建Mac-Catalyst时某些默认设置可能关联到.NET Framework,得手动覆盖。
一步步解决
- 揪出搞事的NuGet包
- 运行命令查看所有直接和间接依赖:
dotnet list package --include-transitive - 找到带.NET Framework 4.7.2依赖的包,要么更新到支持.NET 6的最新版本,要么直接替换为无相关依赖的替代包。
- 运行命令查看所有直接和间接依赖:
- 检查项目文件细节
- 打开
.csproj文件,搜索4.7.2或.NETFramework相关条目,删除或修改为正确的目标框架配置。 - 检查是否有
<Import>标签导入了旧的.NET Framework相关.targets文件,有的话直接删除。
- 打开
- 清理构建缓存
- 执行以下命令彻底清理缓存:
dotnet clean rm -rf ~/.nuget/packages rm -rf obj bin - 重新还原依赖:
dotnet restore
- 执行以下命令彻底清理缓存:
- 给Mac-Catalyst明确目标框架
- 确保项目文件里的目标框架配置正确,示例:
<TargetFrameworks>net6.0-ios;net6.0-maccatalyst;net6.0-android</TargetFrameworks> <TargetFramework Condition="$([MSBuild]::IsOSPlatform('windows'))">net6.0-windows10.0.19041.0</TargetFramework> - 在
<PropertyGroup>节点中添加<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>,禁用隐式的.NET Framework引用。
- 确保项目文件里的目标框架配置正确,示例:
- 核对VS for Mac的配置
- 确认Visual Studio for Mac已安装最新的.NET 6 SDK和Mac-Catalyst工作负载,前往「Visual Studio > 设置 > SDK管理器」核对组件完整性。
内容的提问来源于stack exchange,提问作者slappy
相关产品推荐
相关产品推荐

