1
votes

I'd appreciate some help on the following..

I have started a Xamarin Forms application using Prism Forms.

I created the project in Visual Studio (Windows) using the Template Pack.

The project builds OK but when I try to run it in the Simulator on my Mac I get an error on the call to the base constructor of the PrismApplication class as soon as the application starts. See error message and stack trace below. Thanks in advance.

Package Versions

  • Prism.Ninject.Forms Version: 7.0.0.168-pre (Also tried same version of Unity.Forms)
  • Xamarin.Forms Version: 2.4.0.282

Error Message: Operation is not supported on this platform

Source: System.Reflection.Emit.Lightweight

Stack Trace:

at System.Reflection.Emit.DynamicMethod..ctor (System.String name, System.Type returnType, System.Type[] parameterTypes, System.Boolean restrictedSkipVisibility) [0x00006] in <896ad3a163a543758d64d3128b003bfb>:0 at Ninject.Injection.DynamicMethodInjectorFactory.Create (System.Reflection.ConstructorInfo constructor) [0x00005] in :0 at Ninject.Planning.Strategies.ConstructorReflectionStrategy.Execute (Ninject.Planning.IPlan plan) [0x0005c] in :0 at Ninject.Planning.Planner+<>c__DisplayClass9_0.b__0 (Ninject.Planning.Strategies.IPlanningStrategy s) [0x00000] in :0 at Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map[T] (System.Collections.Generic.IEnumerable1[T] series, System.Action1[T] action) [0x00010] in :0 at Ninject.Planning.Planner.CreateNewPlan (System.Type type) [0x00053] in :0 at Ninject.Planning.Planner.GetPlan (System.Type type) [0x00026] in :0 at Ninject.Activation.Providers.StandardProvider.Create (Ninject.Activation.IContext context) [0x00053] in :0 at Ninject.Activation.Context.ResolveInternal (System.Object scope) [0x00034] in :0 at Ninject.Activation.Context.Resolve () [0x00073] in :0 at Ninject.KernelBase.Resolve (Ninject.Activation.IRequest request, System.Boolean handleMissingBindings) [0x00144] in :0 at Ninject.KernelBase.Resolve (Ninject.Activation.IRequest request) [0x00000] in :0 at Ninject.ResolutionExtensions.GetResolutionIterator (Ninject.Syntax.IResolutionRoot root, System.Type service, System.Func2[T,TResult] constraint, System.Collections.Generic.IEnumerable1[T] parameters, System.Boolean isOptional, System.Boolean isUnique) [0x0002f] in :0 at Ninject.ResolutionExtensions.Get[T] (Ninject.Syntax.IResolutionRoot root, System.String name, Ninject.Parameters.IParameter[] parameters) [0x0000d] in :0 at Prism.Ninject.PrismApplication.CreateNavigationService () [0x00010] in :0 at Prism.PrismApplicationBase1[T].Initialize () [0x0004d] in <ec44a08008f44d76a60fa1415f8ba03b>:0 at Prism.PrismApplicationBase1[T].InitializeInternal () [0x00006] in :0 at Prism.PrismApplicationBase1[T]..ctor (Prism.IPlatformInitializer1[T] initializer) [0x00031] in :0 at Prism.Ninject.PrismApplication.get_Logger () [0x00000] in :0 at MyProject.App..ctor (Prism.Ninject.IPlatformInitializer initializer) [0x00000] in /Users/Tomas/Projects/MyProject/MyProject/MyProject/App.xaml.cs:23 at MyProject.iOS.AppDelegate.FinishedLaunching (UIKit.UIApplication app, Foundation.NSDictionary options) [0x00007] in /Users/Tomas/Projects/MyProject/MyProject/MyProject.iOS/AppDelegate.cs:24 at (wrapper managed-to-native) UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr) at UIKit.UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) [0x00005] in /Users/builder/data/lanes/5489/c4240f3f/source/xamarin-macios/src/UIKit/UIApplication.cs:79 at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00038] in /Users/builder/data/lanes/5489/c4240f3f/source/xamarin-macios/src/UIKit/UIApplication.cs:63 at MyProject.iOS.Application.Main (System.String[] args) [0x00001] in /Users/Tomas/Projects/MyProject/MyProject/MyProject.iOS/Main.cs:17

1
Can you please clarify are you using Prism.Unity.Forms or Prism.Ninject.Forms?Dan Siegel
Oops! Sorry, I should clarify. I initially got the error while using Ninject.Forms. I subsequently changed to Unity.Forms but received the same error. I'll update my question to clear any confusion.Tomás
Hi Dan. Have you or the team confirmed whether or not there is an issue here or is it more likely my setup? Thanks!Tomás
I cannot duplicate your issue. I do see another issue with Ninject. I would suggest for now using a container other than Ninject and cleaning/deleting your output (obj/bin) folders.Dan Siegel
Ok. Thanks Dan. I have decided I might use DryIoc as recommended by you in another post here on StackOverflow. I might first try creating a new project from scratch using the Prism Templates and see if I have similar issues. Thanks for the response - and aren't the Prism Team supposed to be on holidays! ;-)Tomás

1 Answers

1
votes

While I am unsure what was causing the exception you noted here, this did lead to the discovery of a number of issues in Prism 7 preview 5 for Prism.Ninject.Forms, specifically revolving around the ContainerExtension. The issues have now been fixed and are available starting in version 7.0.0.340-ci on MyGet.