多项目解决方案下启动MAUI App时的错误求助
解决MAUI iOS启动时的目标框架不兼容与捆绑标识符错误
问题根源
你的错误分为两类:
- 类库项目目标框架不匹配:以
net8.0-ios编译整个解决方案时,MyMauiApp.Core和MyMauiApp.FirebaseClient仅配置了net8.0目标,MSBuild尝试生成iOS兼容产物但缺少对应配置,导致project.assets.json无net8.0-ios条目。 - 测试项目被错误处理:测试项目(Core.Test、FirebaseClient.Test)并非iOS应用,但被强制按iOS目标编译,因此要求配置
ApplicationId,而测试项目不需要该配置。
分步解决方案
1. 修复类库项目的兼容性
方案A:多目标框架配置(推荐)
修改MyMauiApp.Core.csproj和MyMauiApp.FirebaseClient.csproj,将单一目标改为多目标,覆盖.NET 8及移动平台:
<PropertyGroup> <TargetFrameworks>net8.0;net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <OutputType>Library</OutputType> </PropertyGroup>
删除原有的条件性<PropertyGroup>(多目标已包含iOS平台)。
方案B:单一目标兼容配置
若不想多目标,在类库项目中添加兼容配置,确保MAUI项目能正确引用:
<PropertyGroup> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <OutputType>Library</OutputType> <IsCrossTargetingProject>true</IsCrossTargetingProject> </PropertyGroup>
2. 排除测试项目的iOS编译
方式1:修改测试项目配置
在MyMauiApp.Core.Test.csproj和MyMauiApp.FirebaseClient.Test.csproj的<PropertyGroup>中添加条件,跳过iOS目标构建:
<PropertyGroup> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <IsPackable>false</IsPackable> <IsTestProject>true</IsTestProject> <OutputType>Library</OutputType> <!-- 新增:iOS目标下不构建 --> <Build Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">false</Build> </PropertyGroup>
方式2:仅编译MAUI项目
直接针对MAUI项目执行启动命令,避免处理整个解决方案中的测试项目:
dotnet build MyMauiApp/MyMauiApp.csproj -t:Run -f net8.0-ios -p:_DeviceName=:v2:udid=16A1C6AA-DC20-4CB6-BB69-AEA5B7D0D47B
3. 更新依赖
修改完成后执行还原命令,确保project.assets.json更新:
dotnet restore MyMauiApp.sln
验证
重新运行启动命令,即可解决目标框架不匹配和捆绑标识符的错误。
内容的提问来源于stack exchange,提问作者Schnoms93
相关产品推荐
相关产品推荐

