链接期间保留ICommand



在我的Xamarin.Forms代码中,我多次使用ICommand来创建超链接。

代码在调试过程中运行良好,但命令在发布过程中会被链接器删除。

我在我的Android项目的根目录中创建了一个XML文件,其Build Action设置为LinkDescription,其代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<linker>
<assembly fullname="System">
<type fullname="System.Windows.Input.ICommand"></type>
</assembly>
</linker>

我原以为这会保留指挥权,但没有;这些链接在发布期间再次不起作用。我做错什么了吗?

我不知道为什么XML解决方案不起作用,但在我的案例中起作用的是:

发布期间,在每个ICommand之前使用[Preserve]属性会产生所需效果!

您得到了错误的程序集。找到正确程序集的最简单方法是按住CTRL键并单击Xamarin项目中的符号ICommand,这将打开一个反编译器窗口,其中程序集位于文件顶部的#region中。

#region Assembly netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
// C:Program FilesdotnetsdkNuGetFallbackFoldernetstandard.library2.0.3buildnetstandard2.0refnetstandard.dll
#endregion

现在将XML更改为:

<?xml version="1.0" encoding="utf-8" ?>
<linker>
<assembly fullname="netstandard">
<type fullname="System.Windows.Input.ICommand" />
</assembly>
</linker>

最新更新