2016-06-12 8 views
7

Nach dem letzten Upgrade auf Xamarin Studio 6 und Mono 4.4.0.182 (läuft unter OSX 10.10.5) haben wir festgestellt, dass unsere Anwendung nicht mehr läuft (Asp.NET MVC/Razor Website) . Die Lösung kompiliert jedoch korrekt.
Wir haben versucht, zu den vorherigen Versionen zurückzukehren, die funktionierten - Xamarin Studio 5.10.3 und Mono 4.3.2, und unsere Anwendung läuft immer noch nicht korrekt. Die exakt gleiche Anwendung funktionierte vor dem Update einwandfrei.
Es wurden keine weiteren Umgebungs-/Codeänderungen vorgenommen, und Neustarts haben ebenfalls nicht funktioniert.Mono - System.TypeLoadException: Konnte die Typen nicht laden

Fehler werden nach dem Update generiert.

1. Fehler (beim Start der Anwendung): System.Reflection.ReflectionTypeLoadException
Der von SimpleInjector Container.RegisterPackages ausgelöst wird(). Dies funktionierte vor dem Xamarin/Mono-Update, und es wurden keine Codeänderungen/Paketaktualisierungen vorgenommen/vorgenommen.

Could not load type 'System.Net.HttpListener' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 
Could not load type 'System.Net.HttpListenerPrefixCollection' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 
Could not load type 'System.Net.HttpWebRequest' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 
Could not load type 'System.Net.Security.SslStream' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 
Could not load type 'System.Net.WebSockets.ClientWebSocket' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 

Stacktrace

at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (System.Reflection.Assembly,bool) at System.Reflection.Assembly.GetExportedTypes() [0x00000] in /private/tmp/source-mono-4.3.2/bockbuild-xamarin/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/corlib/System.Reflection/Assembly.cs:407 at SimpleInjector.PackageExtensions.GetExportedTypesFrom (System.Reflection.Assembly assembly) [0x00000] in <filename unknown>:0 
at SimpleInjector.PackageExtensions+<>c.<RegisterPackages>b__1_0 (System.Reflection.Assembly assembly) [0x00000] in <filename unknown>:0 
at System.Linq.Enumerable+<SelectManyIterator>c__Iterator5`3[TSource,TCollection,TResult].MoveNext() [0x00059] in <filename unknown>:0 
at System.Linq.Enumerable+WhereSelectEnumerableIterator`2[TSource,TResult].MoveNext() [0x00078] in <filename unknown>:0 
at System.Linq.Buffer`1[TElement]..ctor (IEnumerable`1 source) [0x00087] in <filename unknown>:0 
at System.Linq.Enumerable.ToArray[TSource] (IEnumerable`1 source) [0x00011] in <filename unknown>:0 
at SimpleInjector.PackageExtensions.RegisterPackages (SimpleInjector.Container container, IEnumerable`1 assemblies) [0x000f0] in <filename unknown>:0 
at SimpleInjector.PackageExtensions.RegisterPackages (SimpleInjector.Container container) [0x0002f] in <filename unknown>:0 
at MyApplication.Web.UI.MvcApplication.InitializeContainer (SimpleInjector.Container container) [0x00003] in /Users/*sanitized*/MyApplication.Web.UI/Global.asax.cs:57 

2. Fehler (nach Seite neu geladen und alle nachfolgenden Seitenanfragen): System.ArgumentException Ein Element mit demselben Schlüssel wurde bereits hinzugefügt.
Dies verweist auf einen Aufruf von System.Web.Mvc.RouteCollectionExtensions.MapRoute in unserer App_Start/RouteConfig.cs-Datei (die wiederum von Global.asax.cs, Application_Start aufgerufen wird), die angibt, dass diese Datei mindestens zweimal aufgerufen wird. Auch dies funktionierte vor dem letzten Xamarin/Mono-Update.

Kann jemand Hilfe und/oder Vorschläge geben?

BEARBEITEN
Zurückgerollt auf Mono 4.2.4.4, und der Fehler ist weg. Es sieht so aus, als wäre in 4.3.2 eine Änderung eingeführt worden, die diesen Bug eingeführt hat.

+0

Wenn das Reflektieren über Assemblys und Typen ein Problem in Mono ist, können Sie einfach die Funktionen des Simple Injector-Pakets entfernen und dies ohne Reflektion tun. Die Paketfunktion ist nur für hoch dynamische Plug-in-basierte Anwendungen geeignet. – Steven

+0

Das Gleiche ist mir passiert. Konnte immer noch keine Lösung finden! – Deepal

+1

Ich kehrte auch zurück zu 4.2.4.4 und es funktioniert. – Deepal

Antwort

3

ich ein ähnliches Problem hatte: gelöst

konnte nicht geladen Typ 'System.Net.HttpListener' aus Assembly 'System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'

I Hinzufügen von Mono.Security zum ausführbaren Projekt und erneutes Erstellen. Hoffe, das hilft

+0

Wie haben Sie das gemacht? –

+0

Ich habe die Assembly vom GAC im Hauptprogramm der ausführbaren Datei mit der Xamarin Studio IDE referenziert. – mauro

Verwandte Themen