Xamarin.Forms iOS 处于发布模式的应用未触发社区工具包 TouchEffect 命令

Xamarin.Forms iOS app in Release mode Community Toolkit TouchEffect command not firing

我有一个 Xamarin.Forms 应用程序,其版本为 Android 和 iOS。 Android 版本在 Debug 和 Release 模式下都运行良好。事实上 Android 版本已经在 Play Store 中了。

但是 iOS 版本有一个奇怪的问题。在调试模式下,它工作得很好,但是在发布模式下,我到处都使用 Xamarin Toolkit TouchEffect 来将命令附加到元素,但不会触发。

<buttons:BackButton xct:TouchEffect.Command="{Binding BackCommand}" xct:TouchEffect.NativeAnimation="True" />

我在网上查了一下,显然这可能是一个链接器问题,因为链接器可能正在从最终版本中剥离这段代码,但是我将它设置为“Link Framework SDKs only”,这似乎是发布应用时的推荐设置。

还有什么我可能遗漏的吗?

谢谢

因此,经过大量研究,该错误确实与链接器有关,链接器从发布版本中剥离了一些社区工具包代码,尽管事实上我在 xaml 中使用该工具包。需要注意的一件事是,我仅在 Xaml.

中使用工具包

通过使用以下代码在 iOS 项目文件中简单地创建一个 class,链接器发现我确实需要这个包并且不会删除它的代码。

public class LinkerPleaseInclude
{
    public void Include(Xamarin.CommunityToolkit.Effects.TouchEffect arg)
    {
        var dummyCommand = arg.Command;
        var dummyCommandParameter = arg.CommandParameter;
        var dummyNativeAnimation = arg.NativeAnimation;
    }
}

编辑:这可能不足以解决问题。如果它仍然存在,请尝试在 iOS Build screen 的附加 mtouch 参数中包含‘--linkskip=Xamarin.CommunityToolkit’。应该可以了。

如果有人在 Android 平台上遇到此问题,我们可以通过在“Android 构建 -> 链接器”部分的“忽略程序集”条目中添加 Xamarin.CommunityToolkit; 来修复它。 出于某种原因,当我们将链接器行为保持为“不要 link”时,也不会采用这些程序集。