私はx86デバッグモードで正常に構築されるxamarin PCLを持っています。リリースモード(x86またはx64)またはx64デバッグモードに切り替えると、実行時の例外が発生します。それはおそらくユニバーサルアプリケーションのリリースをビルドするときに、自分のXamarin PCLがランタイム例外をスローするのはなぜですか?
に関係なく、私は私が使用している他のどのようなアセンブリを知りません。どうすればわかりますか?
私のコンピュータはx64です。デバッグまたはリリースでx64を実行すると、
MyApp.Interop.dllの例外 "System.NotImplementedException"が発生します。追加情報Arg_NotImplementedException。
コンストラクタApp()を入力する前に。コンストラクタの呼び出しは次のとおりです。
LoadApplication(new MyApp.App());
私がx86をビルドすると、もう少し手に入ります。 MyAppConstructorに入り、xamlコンストラクターが呼び出され、例外が発生します。
System.Private.Reflection.Core.dllのSystem.Reflection.MissingMetadataException AdditionalInfo:Arg_InvokeMethodMissingMetadata、System.EventHandler。詳細については、http://go.microsoft.com/fwlink/?LinkId=623485
を参照してください。Xamlアセンブリのように見えません。どのアセンブリを追加する必要があるのかを知るにはどうすればいいですか?
私はデバッグの上に戻したが、私は、例外の詳細を得ることができるように「ネイティブコンパイラを使う」ためにそれを回し:
のx86: 追加情報:型「システム上でデリゲートを作成することはできませんが。 EventHandler 'はInvokeメソッドのメタデータが欠落しています。タイプの例外「System.NotImplementedException」はXamarin.Forms.Platform.UAP.dllで発生したが、ユーザーコードで処理されなかった
追加情報:メソッドの詳細については、http://go.microsoft.com/fwlink/?LinkID=616867
のx64をご覧ください。または操作が実装されていません。
更新:モバイル製品にx64プロセッサが搭載されていないため、x64はXamarinではサポートされていないと思いますか? x86リリースではまだ問題が残っています。 私は私のユニバーサルApp.xaml.cs
MyAppMainPageが、私は私のPCLにロードしようとし、残りはページがで構成されていることをUI要素ですXAMLページですList<Assembly> assembliesToInclude = new List<Assembly>();
assembliesToInclude.Add(typeof(MyApp.MyAppMainPage).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.ImageSource).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.StackLayout).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.Label).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.Button).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.FormattedString).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.Span).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.Image).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.ScrollView).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.WebView).GetTypeInfo().Assembly);
// add this line
Xamarin.Forms.Forms.Init(e,assembliesToInclude); // requires the `e` parameter
で次のアセンブリを追加しようとしています。
私は今、この例外がスローされたx86用参照:
スローSystem.Private.Interop.dll 例外の 'System.PlatformNotSupportedException':スローSystem.Private.Threading.dll 例外の 'System.AggregateException' :System.Private.Reflection.Core.dllの 'System.Reflection.MissingMetadataException'
プラットフォームがサポートされないのはなぜですか? XamarinはUniversalの権利をサポートしていますか?
すべての正しいことをしようとしているようですが、明らかにbinフォルダ内のすべてのファイルを削除して削除しましたか?ビルドログの詳細を表示し、デバッグとリリースを比較することによって手掛かりがありますか –
@JeremyThompsonビルドログの詳細を表示するにはどうすればよいですか? –
Visual Studioで、[ツール] - > [オプション]に移動し、[プロジェクトとソリューション] - > [ビルドと実行]ノードを見つけます。 –