如何确保 Xamarin.ios 扩展项目与主项目一起部署

How to ensure Xamarin.ios extension project deploys with main project

我正在尝试向 Visual Studio 中现有的 Xamarin.iOS 项目添加内部共享。我已经添加了一个共享扩展项目(使用 VS 中的模板项目),但是当我在设备上测试时 OS 共享屏幕中没有任何显示。我已经构建并测试了一个 MS sample ,它工作正常并且确实在设备上显示。 我认为问题是我的应用程序的第二个 EXE 在我测试时根本没有部署。当我按 F5 键 运行 附加设备上的 MS 项目时,构建输出 window 包括如下行:

CopyingFile - PercentComplete: 40%
CopyingFile - Path: /var/folders/ns/vw2n_fhd58d3v21nv64s4fhw0000gn/T/Xamarin.iOS_InstallShadowPath/Share.app.mXLJ6c/Share.app_sparse.ipa/Payload/Share.app/PlugIns/ShareExtension.appex/ShareExtension.aotdata.arm64
CopyingFile - Path: /var/folders/ns/vw2n_fhd58d3v21nv64s4fhw0000gn/T/Xamarin.iOS_InstallShadowPath/Share.app.mXLJ6c/Share.app_sparse.ipa/Payload/Share.app/PlugIns/ShareExtension.appex/ShareExtension.aotdata.arm64
CopyingFile - PercentComplete: 41%
CopyingFile - Path: /var/folders/ns/vw2n_fhd58d3v21nv64s4fhw0000gn/T/Xamarin.iOS_InstallShadowPath/Share.app.mXLJ6c/Share.app_sparse.ipa/Payload/Share.app/PlugIns/ShareExtension.appex/ShareExtension.dll
CopyingFile - PercentComplete: 41%
CopyingFile - Path: /var/folders/ns/vw2n_fhd58d3v21nv64s4fhw0000gn/T/Xamarin.iOS_InstallShadowPath/Share.app.mXLJ6c/Share.app_sparse.ipa/Payload/Share.app/PlugIns/ShareExtension.appex/ShareExtension.dll
CopyingFile - PercentComplete: 41%
CopyingFile - Path: /var/folders/ns/vw2n_fhd58d3v21nv64s4fhw0000gn/T/Xamarin.iOS_InstallShadowPath/Share.app.mXLJ6c/Share.app_sparse.ipa/Payload/Share.app/PlugIns/ShareExtension.appex/ShareExtension.dll
CopyingFile - PercentComplete: 42%
CopyingFile - Path: /var/folders/ns/vw2n_fhd58d3v21nv64s4fhw0000gn/T/Xamarin.iOS_InstallShadowPath/Share.app.mXLJ6c/Share.app_sparse.ipa/Payload/Share.app/PlugIns/ShareExtension.appex/libmono-native-compat.dylib

分明是把第二个项目复制到/plugins/子文件夹下。但是,当我为我自己的应用程序按 F5 键时,我的主项目及其资源等的构建输出中有很多行,但第二个项目没有这样的等价物,也没有任何对插件子文件夹的引用。 在我的应用程序解决方案中,我已将扩展项目设置为构建(并且部署复选框不适用于配置管理器中的 xamarin.ios)。在解决方案属性中,我将主项目设置为依赖于第二个项目。我已验证第二个项目确实构建:如果我引入错误,或更改其 ID,使捆绑包 ID 不再匹配我的通配符配置文件,则构建和部署将因错误而终止。

如何确保包含扩展项目(无论是从 VS 测试解决方案时还是构建用于上传的 IPA 时)?

您需要从主项目中引用共享扩展以确保它包含在构建的二进制文件中。

但是,这并不意味着该应用会在您共享时出现,您需要在共享扩展的 info.plist 文件中指定您的应用接收的内容。