MAUI iOS添加Network Extension:找不到对应Xamarin项目模板求解决办法
给MAUI应用添加iOS Target Extension的可行方案
方案1:新建.NET iOS Extension项目,关联MAUI主项目
- 打开Visual Studio,直接创建iOS Extension项目(选择.NET iOS系列的模板,不要选旧版Xamarin.iOS模板),比如你需要的Share Extension、Today Extension这类具体类型。
- 项目创建完成后,修改扩展项目的
.csproj文件:- 添加对MAUI主项目的引用,方便共享代码或资源。
- 将
TargetFramework设置为和MAUI项目一致的版本(比如net8.0-ios17.2),同时确保配置中包含<IsExtension>true</IsExtension>。
- 回到MAUI主项目的
.csproj文件,添加扩展项目的引用,打包时在iOS打包设置里将扩展包含进去。
方案2:手动修改项目文件生成Extension
- 如果找不到匹配的模板,可以拿一个现成的iOS项目改造:
- 将
.csproj中的<OutputType>改为Library,并添加<IsExtension>true</IsExtension>配置。 - 补充Extension的核心配置,在
<PropertyGroup>中加入:<CFBundleDisplayName>你的扩展名称</CFBundleDisplayName> <CFBundleIdentifier>com.你的公司名.你的应用名.扩展后缀</CFBundleIdentifier> <NSExtension> <NSExtensionAttributes> <!-- 根据你需要的Extension类型添加对应属性,比如Share Extension需配置NSExtensionActivationRule --> </NSExtensionAttributes> <NSExtensionPointIdentifier>对应Extension的系统标识,比如Share Extension是com.apple.share-services</NSExtensionPointIdentifier> </NSExtension> - 编写扩展的入口类,比如继承
UIViewController,实现必要的生命周期方法。
- 将
方案3:在MAUI项目内嵌Extension目录(不推荐,易混淆)
- 在MAUI项目的
Platforms/iOS目录下新建Extension文件夹,存放扩展的代码和xib资源文件。 - 编辑MAUI项目的
.csproj,为该目录添加单独的编译配置:
注意:MAUI主项目本身是应用主体,无法同时作为Extension运行,因此这种方式仅适合简单场景,更推荐使用独立扩展项目的方案。<ItemGroup> <Compile Include="Platforms/iOS/Extension/**/*.cs" /> <BundleResource Include="Platforms/iOS/Extension/**/*.xib" /> </ItemGroup>
关键注意事项
- 扩展的Bundle Identifier必须是MAUI主项目Bundle Identifier的后缀形式,比如主项目是
com.xxx.myapp,扩展需设为com.xxx.myapp.myextension。 - 调试时,要么选择扩展项目作为启动项,要么在MAUI项目的调试设置中包含该扩展。
- 部分特殊类型的Extension需要额外配置Entitlements文件,比如访问相册、网络权限等,需按需添加对应权限声明。
内容的提问来源于stack exchange,提问作者Hak
相关产品推荐
相关产品推荐

