.NET 8 MAUI解决方案在VS for Mac 17.6.7编译失败,命令行正常,如何解决?
问题描述
我有一个从.NET 7升级至.NET 8的MAUI解决方案,在Visual Studio for Mac 17.6.7中编译失败,但通过dotnet命令行执行build操作可成功编译。
Visual Studio for Mac报错信息
/usr/local/share/dotnet/sdk/7.0.403/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(5,5): Error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0. Either target .NET 7.0 or lower, or use a version of the .NET SDK that supports .NET 8.0. Download the .NET SDK from https://aka.ms/dotnet/download (NETSDK1045) (Doma.SharedInterfaces)
dotnet命令行编译结果
进入解决方案目录执行dotnet build后编译成功,输出如下:
MSBuild version 17.8.3+195e7f5a3 for .NET Determining projects to restore... All projects are up-to-date for restore. Doma.SharedInterfaces -> /Users/mwardell/src/testmasters/DomaFramework/Doma.SharedInterfaces/bin/Debug/net8.0/Doma.SharedInterfaces.dll Doma.DataLayer -> /Users/mwardell/src/testmasters/DomaFramework/Doma.DataLayer/bin/Debug/net8.0/Doma.DataLayer.dll Doma.DataLayer.Tests -> /Users/mwardell/src/testmasters/DomaFramework/Doma.DataLayer.Tests/bin/Debug/net8.0/Doma.DataLayer.Tests.dll Detected signing identity: Bundle Id: mil.navy.doma App Id: mil.navy.doma Doma -> /Users/mwardell/src/testmasters/DomaFramework/Doma/bin/Debug/net8.0/Doma.dll Detected signing identity: Bundle Id: mil.navy.doma App Id: mil.navy.doma Doma -> /Users/mwardell/src/testmasters/DomaFramework/Doma/bin/Debug/net8.0-maccatalyst/maccatalyst-arm64/Doma.dll Doma -> /Users/mwardell/src/testmasters/DomaFramework/Doma/bin/Debug/net8.0-ios/iossimulator-arm64/Doma.dll Doma -> /Users/mwardell/src/testmasters/DomaFramework/Doma/bin/Debug/net8.0-android/Doma.dll Doma.SharedInterfaces -> /Users/mwardell/src/testmasters/DomaFramework/Doma.SharedInterfaces/bin/Debug/net8.0/Doma.SharedInterfaces.dll Doma.DataLayer -> /Users/mwardell/src/testmasters/DomaFramework/Doma.DataLayer/bin/Debug/net8.0/Doma.DataLayer.dll Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink Doma.Tests -> /Users/mwardell/src/testmasters/DomaFramework/Doma.Tests/bin/Debug/net8.0/Doma.Tests.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:09.63
解决方案
可以让该解决方案在Visual Studio for Mac中正常编译,具体操作如下:
1. 升级Visual Studio for Mac版本
Visual Studio for Mac 17.6.7默认绑定.NET 7 SDK,不支持.NET 8项目编译。需将IDE升级至17.7及以上版本,这类版本已原生适配.NET 8 SDK。
2. 手动指定IDE使用.NET 8 SDK(无需升级IDE时)
- 打开Visual Studio for Mac,点击顶部菜单栏
Visual Studio->Settings - 在设置窗口选择
Projects->.NET Runtimes - 在已安装的SDK列表中找到.NET 8.0版本,设为默认SDK
- 重启IDE后重新加载解决方案并编译
3. 检查项目与全局SDK配置
- 逐个打开项目的
.csproj文件,确认<TargetFramework>节点值为net8.0(MAUI项目需确保多目标框架如net8.0-android、net8.0-ios等配置正确) - 若解决方案根目录存在
global.json文件,检查其sdk.version是否指定了正确的.NET 8版本,示例:{ "sdk": { "version": "8.0.100" } }
4. 清理恢复后重新编译
- 在Visual Studio for Mac中点击
Build->Clean All - 接着点击
Build->Restore NuGet Packages - 最后执行编译操作
内容的提问来源于stack exchange,提问作者Mark Wardell
相关产品推荐
相关产品推荐

