【问题标题】:Xamarin Linker: Default constructor not found for type MvvmCross.Platform.IoC.MvxPropertyInjectorXamarin 链接器:找不到类型 MvvmCross.Platform.IoC.MvxPropertyInjector 的默认构造函数
【发布时间】:2017-04-26 14:00:44
【问题描述】:

这与this 的问题相同,但该解决方案对我不起作用。我有一个包含以下内容的 LinkerPleaseInclude.cs 文件:

public void Include(MvvmCross.Platform.IoC.MvxPropertyInjector injector)
{
    injector = new MvvmCross.Platform.IoC.MvxPropertyInjector();
} 

我使用 Link All 作为链接器行为,但我的印象是在 LinkerPleaseInclude.cs 中包含上述内容会提示链接器不要将其删除。

不确定是否重要,但这里有一些平台详细信息:

Xamarin Studio 6.3

MvvmCross 4.4.0

.NETCore UWP 5.3.3

【问题讨论】:

    标签: xamarin.ios mvvmcross xamarin-linker


    【解决方案1】:

    名为LinkerPleaseInclude.cs 的文件本身不会保留任何内容。这只是 Mvvmcross 使用的约定。

    因此,如果没有调用(或保留*)您的 Include 方法,则链接器将不会标记它(根据需要)并且不会标记 MvxPropertyInjector .ctor。

    * 在方法上添加[Preserve] 属性将确保链接器包含它(以及它调用的所有内容)。

    【讨论】:

    • [Preserve(AllMembers = true)] 属性添加到您的LinkerPleaseInclude 类可以一举解决所有包含成员的问题
    • 那行得通。谢谢。有趣的是,还有其他几种类型/方法需要在该文件中添加代码,但显然不需要 [Preserve]。
    • 如果任何其他 used 代码路径到达您需要的代码,则不需要 [Preserve]。链接器静态分析器将确保保留这些内容。
    猜你喜欢
    • 2014-06-28
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    相关资源
    最近更新 更多