我正在尝试将DatePicker添加到Xamarin Forms项目中。我从Xamarins website提取了一个样本,或者也在下面解释过:
<DatePicker VerticalOptions="CenterAndExpand" Date="{x:Static sys:DateTime.Now}">
<DatePicker.Format>yyyy-MM-dd</DatePicker.Format>
<DatePicker.MinimumDate>
<sys:DateTime x:FactoryMethod="Parse">
<x:Arguments>
<x:String>Jan 1 2000</x:String>
</x:Arguments>
</sys:DateTime>
</DatePicker.MinimumDate>
<DatePicker.MaximumDate>
<sys:DateTime x:FactoryMethod="Parse">
<x:Arguments>
<x:String>Dec 31 2050</x:String>
</x:Arguments>
</sys:DateTime>
</DatePicker.MaximumDate>
</DatePicker>
我也有两个命名空间:
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
在iPhone模拟器(版本11.2)上运行时,它很乐意呈现并运行但是如果我在物理设备(版本11.2)上运行它会引发以下异常:
System.MissingMemberException
找不到System.DateTime :: Parse(System.String)
的静态方法
有没有人遇到过这个问题,或者知道为什么会失败?
答案 0 :(得分:1)
只是为了澄清@Jason和@SushHangover提到的答案。
Mono链接器执行静态评估,因此未编译未编译的XAML,因为它将在运行时基于序列化/基于反射。没有链接器,应用程序将是巨大的,就iOS应用程序而言,这些应用程序必须链接Xamarin.iOS.dll以删除您未使用的功能,否则应用程序提交将失败,因为整个iOS API被引用而没有全部iOS权利已启用。还解释了here。
简而言之,快速解决方法是在代码中引用DateTime.Parse
以证明重点。当我有机会时,我会在编译器中实际强制它,因为我不需要在代码中调用DateTime.Parse
。