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

将Xamarin Forms应用升级至MAUI时的构建问题及排查记录

迁移Xamarin Forms到.NET 6 MAUI的构建问题及解决进展

背景

使用升级助手将包含Android和iOS项目的Xamarin Forms应用迁移至基于.NET 6的MAUI,仅升级解决方案(未升级Android、iOS项目),删除bin和obj文件夹并清理重建后,出现一系列构建错误。

初始构建错误

  • Error : XamlC error XFC0000 : 无法解析类型 "ContentPage"。
  • Error : XamlC error XFC0000 : 无法解析类型 "Frame"。
  • Error : XamlC error XFC0000 : 无法解析类型 "Application"。
  • 项目目标框架为 net6.0-android;net6.0-ios,无法被目标框架为 MonoAndroid,Version=v13.0 的项目引用。
  • 项目目标框架为 net6.0-android;net6.0-ios,无法被目标框架为 Xamarin.iOS,Version=v1.0 的项目引用。
  • 项目与monoandroid13.0不兼容,项目支持的框架:
    net6.0-android31.0 (.NETCoreApp,Version=v6.0)
    net6.0-ios16.1 (.NETCoreApp,Version=v6.0)
  • 项目与xamarinios10不兼容,项目支持的框架:
    net6.0-android31.0 (.NETCoreApp,Version=v6.0)
    net6.0-ios16.1 (.NETCoreApp,Version=v6.0)
  • Xamarin.AndroidX.Browser版本冲突:需直接在项目中安装/引用Xamarin.AndroidX.Browser 1.4.0.1解决。依赖链:
    Microsoft.Maui.Dependencies 6.0.553 -> Xamarin.AndroidX.Browser (>= 1.4.0.1)
    Xam.Plugin.HtmlLabel 5.1.0 -> Xamarin.Essentials 1.7.0 -> Xamarin.AndroidX.Browser (>= 1.3.0.5 && < 1.4.0)
  • 错误:使用Windows Forms或WPF,或引用相关项目/包时,必须将目标平台设置为Windows(通常在TargetFramework属性中包含'-windows')。

尝试的修复措施

  • 1-3号错误:参考GitHub方案,在Solution.csproj中添加以下代码片段,但无效:
<Target
    Name="_ValidateMauiDoesNotHaveXamarinForms"
    BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
    Condition="'$(MauiDisableXamarinFormsValidation)' != 'True'">
    <Error
        Code="MA001"
        Text="This project or a dependency has imported the Xamarin.Forms packages. .NET MAUI is not compatible with Xamarin.Forms and is unable to build. Please remove Xamarin.Forms or the project/package dependency that is using Xamarin.Forms."
        Condition="'$(_XFTargetsImported)' == 'true'"/>
</Target>
  • 4-7号错误:找到相关参考链接,但未找到明确解决方法。
  • 8号错误:尝试给Android项目安装Xamarin.AndroidX.Browser 1.4.0.1失败,只能安装1.3.0.6版本,提示“Package restore failed. Rolling back package changes for 'MyProject.Android'.”
  • 9号错误:项目无Windows平台却出现该错误,当前Solution.csproj配置:
<PropertyGroup>
    <TargetFrameworks>net6.0-android;net6.0-ios</TargetFrameworks>
    <UseMaui>True</UseMaui>
    <OutputType>Library</OutputType>
    <ImplicitUsings>enable</ImplicitUsings>
    <SingleProject>true</SingleProject>
</PropertyGroup>

修复进展(更新)

为解决“doesn't have a target for 'net6.0-ios/ios-arm64'”问题,在iOS项目.csproj中添加:

<PropertyGroup Condition="$(TargetFramework.Contains('-ios'))">
    <RuntimeIdentifier>ios-arm64</RuntimeIdentifier>
</PropertyGroup>

完成以下操作后解决部分问题:

  1. 在Android项目.csproj的主PropertyGroup中添加<SingleProject>true</SingleProject>,关闭VS并删除Bin、Obj、.vs文件夹,解决Android物理设备可用性问题;
  2. 将Android平台Resource文件夹下所有文件的生成操作设为AndroidResource,iOS平台设为BundleResource;
  3. 将Xaml文件的生成操作从Embedded Resource改为MauiXaml,解决类型无法解析错误。

剩余构建问题

  • Error NETSDK1136 使用Windows Forms或WPF,或引用相关项目/包时,必须将目标平台设置为Windows(通常在TargetFramework属性中包含'-windows')。MyProject.iOS C:\Program Files\dotnet\sdk\7.0.306\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.Shared.targets 250
  • Error NU1107 Xamarin.AndroidX.Browser版本冲突:需直接在MyProject项目中安装/引用Xamarin.AndroidX.Browser 1.4.0.1解决。依赖链:MyProject -> Microsoft.Maui.Dependencies 6.0.553 -> Xamarin.AndroidX.Browser (>= 1.4.0.1);MyProject -> Xam.Plugin.HtmlLabel 5.1.0 -> Xamarin.Essentials 1.7.0 -> Xamarin.AndroidX.Browser (>= 1.3.0.5 && < 1.4.0)
  • Error NU1202 包GMImagePicker.Xamarin 2.5.1与net6.0-ios16.1 (.NETCoreApp,Version=v6.0)不兼容,该包仅支持xamarinios10 (Xamarin.iOS,Version=v1.0)
  • Error APT2144 文件路径无效:E:\My Projects\Xamarin\MyProject-MyProject-app\MyProject\MyProject.Android\obj\Debug\net6.0-android\res\resources\xml_\file_paths.xml

已解决的版本冲突问题

通过在Android项目和解决方案项目中安装以下NuGet包,解决了Xamarin.AndroidX.Browser版本冲突:

Android项目配置

<PackageReference Include="Xamarin.AndroidX.Browser">
  <Version>1.4.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData">
  <Version>2.4.1.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Google.Android.Material">
  <Version>1.6.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.Navigation.UI">
  <Version>2.4.2</Version>
</PackageReference>

解决方案项目配置

<PackageReference Include="Xamarin.AndroidX.Browser" Version="1.4.0.1" />
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.4.1.1" />
<PackageReference Include="Xamarin.Google.Android.Material" Version="1.6.0" />
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.8.0.1" />
<PackageReference Include="Xamarin.AndroidX.Navigation.UI" Version="2.4.2" />

内容的提问来源于stack exchange,提问作者Matthew Pans

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:45:30