2017-12-13 13 views
1

XamarinフォームプロジェクトにDatePickerを追加しようとしています。私はXamarins websiteからサンプルを持ち上げるか、また、以下に説明しました:DateTimeパーズがiOSデバイスで見つかりません

<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 ::パース(可能System.String)

が見つかりませ静的メソッドは、誰もがこの問題に遭遇していないか、これは失敗するだろう理由を知っていますか?

+0

私はリンカがそれを取り除いていると思います。https://developer.xamarin.com/guides/ios/advanced_topics/linker/を参照してください。 – Jason

+0

@ Jasonはリンクをありがとうございます。このリンクから引用すると、「パフォーマンス上の理由から、これはIDEがiOSシミュレータをターゲットとしている場合のデフォルト設定です。デバイスのビルドでは、アプリケーションを実行できないバグがリンカに含まれている場合にのみ回避策として使用する必要があります。それはシミュレータが実際にデバイスを模倣しないようにする奇妙な決定のようです...私はリンクをテストし、それがどうなるかを見てください – Bijington

+0

シミュレータがデバイスを模倣しない多くの方法があります - それが技術的にエミュレータ – Jason

答えて

1

@Jasonと@SushHangoverで述べたように答えを明確にするだけです。

Monoリンカは静的な評価を行います。したがって、コンパイルされていないXAMLは実行時にシリアライズ/リフレクションベースになるため、レビューされません。リンカがなければ、アプリは巨大になり、iOSアプリに関しては、Xamarin.iOS.dllをリンクして、使用していない機能を削除する必要があります。アプリケーション提出は、iOS API全体が参照されていないため失敗します。 iOS資格が有効になりました。 hereについても説明します。

簡潔に言えば、クイックフィックスは、ポイントを証明するためにコードでDateTime.Parseを参照することでした。コード内でDateTime.Parseを呼び出す必要はないので、私は実際にコンパイラで強制的に強制してチャンスを得ることにします。

関連する問題