Monday, September 4, 2017

iOS launch error when referencing ReactiveUI 7.4

Leave a Comment

I have a Xamarin Forms project with a .Net Standard 1.4 core library which holds all the code. I have a reference to ReactiveUI 7.4 in both the core and iOS projects. But when I compile and run on an iOS emulator, I get the following error when the app launches:

2017-08-24 13:39:39.040 TestProject.iOS[25074:307385] Could not register the assembly 'ReactiveUI': System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.   at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (System.Reflection.Assembly,bool)   at System.Reflection.Assembly.GetTypes () [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/10.12.0.20/src/mono/mcs/class/corlib/System.Reflection/Assembly.cs:410    at Registrar.DynamicRegistrar.CollectTypes (System.Reflection.Assembly assembly) [0x00000] in /Users/builder/data/lanes/4991/80b8487d/source/xamarin-macios/src/ObjCRuntime/DynamicRegistrar.cs:237    at Registrar.Registrar.RegisterAssembly (System.Reflection.Assembly assembly) [0x00056] in /Users/builder/data/lanes/4991/80b8487d/source/xamarin-macios/src/ObjCRuntime/Registrar.cs:1978    Loaded assembly: /Library/Frameworks/Xamarin.Interactive.framework/Versions/Current/Agents/iOS/Xamarin.Interactive.iOS.dll [External] Loaded assembly: /Library/Frameworks/Xamarin.Interactive.framework/Versions/Current/Agents/iOS/Xamarin.Interactive.dll [External] Unhandled Exception:  System.BadImageFormatException: <Timeout exceeded getting exception details> 

and

Unhandled Exception: System.BadImageFormatException: Could not resolve field token 0x040000fd File name: 'ReactiveUI'   at TestProject.iOS.AppDelegate..ctor () [0x00008] in C:\TestProject\TestProject.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/4991/80b8487d/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/4991/80b8487d/source/xamarin-macios/src/UIKit/UIApplication.cs:63    at TestProject.iOS.Application.Main (System.String[] args) [0x00001] in C:\TestProject\TestProject.iOS\Main.cs:17  2017-08-24 13:39:46.074 TestProject.iOS[25074:307385] Unhandled managed exception: 

Anyone ever receive this error??

UPDATE:

Here is a link to the error being reproduced on iOS:

https://github.com/assassin316/ReactiveUIError

1 Answers

Answers 1

So I think there are a few things going on and the project wasn't quite setup right

1) You need to install reactiveui nuget into all the platform projects

Right now you only have reactiveui-core installed into the iOS project you also need to install ReactiveUI

https://github.com/assassin316/ReactiveUIError/blob/master/ReactiveUIErrorTest/ReactiveUIErrorTest.iOS/packages.config

2) The System.Reactive Libraries aren't being referenced at all from the iOS project itself https://github.com/assassin316/ReactiveUIError/blob/master/ReactiveUIErrorTest/ReactiveUIErrorTest.iOS/ReactiveUIErrorTest.iOS.csproj

So they only exist in the packages.config file Remove the Rx-* entries from the packages.config file and use the Package Manager Console to install them back in manually

Install-Package Rx-Main -Version 2.2.5 Install-Package Rx-PlatformServices -Version 2.2.5 Install-Package Rx-Core -Version 2.2.5 

or just add this in the csproj file for the iOS project

<Reference Include="System.Reactive.Core, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">   <HintPath>..\..\packages\Rx-Core.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll</HintPath> </Reference> <Reference Include="System.Reactive.Interfaces, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">   <HintPath>..\..\packages\Rx-Interfaces.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll</HintPath> </Reference> <Reference Include="System.Reactive.Linq, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">   <HintPath>..\..\packages\Rx-Linq.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll</HintPath> </Reference> <Reference Include="System.Reactive.PlatformServices, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">   <HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll</HintPath> </Reference> 

or convert the iOS project over to using PackageReferences instead

3) Reactiveui-xamforms needs to be installed into the platform projects as well

At this point I was able to run your project

Your best hint for the issue was above the exception you posted

2017-09-02 12:57:43.983 Sekuence.iOS[86898:37039424] Could not find System.Reactive.Core referenced by assembly ReactiveUI,Version=7.4.0.0, Culture=neutral, PublicKeyToken=null.

2017-09-02 12:57:43.985 Sekuence.iOS[86898:37039424] Could not find System.Reactive.Interfaces referenced by assembly ReactiveUI, Version=7.4.0.0, Culture=neutral, PublicKeyToken=null.

2017-09-02 12:57:43.986 Sekuence.iOS[86898:37039424] Could not find System.Reactive.Linq referenced by assembly ReactiveUI, Version=7.4.0.0, Culture=neutral, PublicKeyToken=null.

2017-09-02 12:57:43.986 Sekuence.iOS[86898:37039424] Could not find System.Reactive.PlatformServices referenced by assembly ReactiveUI, Version=7.4.0.0, Culture=neutral, PublicKeyToken=null.

2017-09-02 12:57:44.029 Sekuence.iOS[86898:37039424] Could not find System.Reactive.Core referenced by assembly ReactiveUIErrorTest.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

2017-09-02 12:57:44.030 Sekuence.iOS[86898:37039424] Could not find ReactiveUI.XamForms referenced by assembly ReactiveUIErrorTest.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

So basically it's saying it can't find any of these DLLs. I looked in the bin folder of the iOS project and sure enough none of them were there. So I just reinstalled all these packages and then everything worked

If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment