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

Android/iOS项目中<UseMauiEssentials>与<UseMaui>的区别及适配疑问

.NET MAUI在现有Xamarin项目中的配置指南

1. <UseMauiEssentials> 和 <UseMaui> 的区别及使用选择

  • <UseMaui>:启用完整的.NET MAUI框架,包含跨平台UI控件、布局系统、资源管理等全套MAUI能力,适合打算彻底迁移到MAUI生态、用MAUI构建跨平台UI的项目。
  • <UseMauiEssentials>:仅启用MAUI Essentials组件——这是Xamarin.Essentials的升级替代版本,提供相机、位置、文件系统等设备级API,但不包含MAUI的UI框架,适合只需要替换Xamarin.Essentials、保留现有Xamarin Native(Android/iOS原生)UI的场景。

不需要同时启用两者:如果用<UseMaui>,MAUI Essentials已经被包含在内,无需额外添加<UseMauiEssentials>;如果只需要设备API,仅添加<UseMauiEssentials>即可。

2. Xamarin.Essentials的处理

必须移除项目中的Xamarin.Essentials NuGet包。因为MAUI Essentials是它的官方继任者,两者底层实现不同,同时存在会导致命名空间冲突、依赖版本冲突等问题。

移除后,只需将代码中的using Xamarin.Essentials;替换为MAUI Essentials对应的命名空间(比如using Microsoft.Maui.ApplicationModel;、using Microsoft.Maui.Media;等),大部分API的调用逻辑可以直接沿用。

3. 所需的.NET MAUI NuGet包配置

分两种场景给出配置方案:

场景一:仅替换Xamarin.Essentials(保留现有Native UI)

  • 在项目的<PropertyGroup>中添加<UseMauiEssentials>true</UseMauiEssentials>
  • 移除Xamarin.Essentials包,添加Microsoft.Maui.Essentials包(版本建议与你的.NET版本匹配,比如net6.0对应MAUI 6.x系列版本)

修改后的Android csproj示例

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0-android</TargetFramework>
    <SupportedOSPlatformVersion>23</SupportedOSPlatformVersion>
    <OutputType>Exe</OutputType>
    <ApplicationId>com.companyname.AndroidprojectwithXamarin</ApplicationId>
    <ApplicationVersion>1</ApplicationVersion>
    <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
    <UseMauiEssentials>true</UseMauiEssentials>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="MonoGame.Content.Builder.Task" Version="3.8.1.303" />
    <PackageReference Include="MonoGame.Framework.Android" Version="3.8.1.303" />
    <PackageReference Include="Microsoft.Maui.Essentials" Version="6.0.547" />
  </ItemGroup>
  <Target Name="RestoreDotnetTools" BeforeTargets="Restore">
    <Message Text="Restoring dotnet tools" Importance="High" />
    <Exec Command="dotnet tool restore" />
  </Target>
</Project>

修改后的iOS csproj示例

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0-ios</TargetFramework>
    <OutputType>Exe</OutputType>
    <SupportedOSPlatformVersion>15.0</SupportedOSPlatformVersion>
    <CodesignKey>iPhone Developer</CodesignKey>
    <UseMauiEssentials>true</UseMauiEssentials>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <CreatePackage>false</CreatePackage>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <CreatePackage>false</CreatePackage>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="MonoGame.Content.Builder.Task" Version="3.8.1.303" />
    <PackageReference Include="MonoGame.Framework.iOS" Version="3.8.1.303" />
    <PackageReference Include="Microsoft.Maui.Essentials" Version="6.0.547" />
  </ItemGroup>
  <Target Name="RestoreDotnetTools" BeforeTargets="Restore">
    <Message Text="Restoring dotnet tools" Importance="High" />
    <Exec Command="dotnet tool restore" />
  </Target>
</Project>

场景二:迁移到完整.NET MAUI(使用MAUI UI)

  • 在项目的<PropertyGroup>中添加<UseMaui>true</UseMaui>
  • 移除Xamarin.Essentials包,无需单独添加Microsoft.Maui.Essentials(<UseMaui>已包含该组件)
  • 添加Microsoft.Maui.Controls及对应平台的兼容包(如果需要兼容旧控件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:05:22