2016-06-12 57 views
7

Dopo l'aggiornamento a Xamarin Studio 6 e Mono 4.4.0.182 (in esecuzione su OSX 10.10.5) abbiamo rilevato che la nostra applicazione non viene più eseguita (sito Web ASP.NET MVC/Razor) . La soluzione si compila correttamente tuttavia.
Abbiamo provato a tornare alle versioni precedenti che funzionavano - Xamarin Studio 5.10.3 e Mono 4.3.2, e la nostra applicazione non funziona ancora correttamente. La stessa identica applicazione funzionava bene prima dell'aggiornamento.
Nessun altro cambio di ambiente/codice è stato apportato e anche i riavvii non hanno funzionato.Mono - System.TypeLoadException: Impossibile caricare i tipi

Errori generati dopo l'aggiornamento.

primo errore (su richiesta di avvio): System.Reflection.ReflectionTypeLoadException
Questo è stato innescato da SimpleInjector Container.RegisterPackages(). Questo funzionava prima dell'aggiornamento Xamarin/Mono e non sono state applicate/apportate modifiche al codice/aggiornamenti del pacchetto.

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 

secondo errore (dopo ricaricare la pagina e le eventuali successive richieste di pagina): System.ArgumentException un elemento con la stessa chiave è già stato aggiunto.
Si tratta di una chiamata System.Web.Mvc.RouteCollectionExtensions.MapRoute nel nostro file App_Start/RouteConfig.cs (richiamato a sua volta da Global.asax.cs, Application_Start), che indica che questo file viene chiamato almeno due volte. Di nuovo, questo funzionava prima del recente aggiornamento Xamarin/Mono.

Qualcuno può fornire assistenza e/o suggerimenti?

MODIFICA
Riportato a Mono 4.2.4.4 e l'errore è andato via. Sembra che ci sia stato un cambiamento introdotto in 4.3.2 ad un certo punto che ha introdotto questo bug.

+0

Se riflettere su assiemi e tipi è un problema in Mono, è possibile rimuovere facilmente la funzione di pacchetti di Simple Injector e farlo invece senza riflessione. La funzionalità dei pacchetti è comunque utile solo per applicazioni plug-in altamente dinamiche. – Steven

+0

La stessa cosa è successa a me. Ancora non riuscivo a trovare una soluzione! – Deepal

+1

Sono tornato anche alla 4.2.4.4 e funziona. – Deepal

risposta

3

Ho avuto un problema simile:

Impossibile caricare il tipo 'System.Net.HttpListener' dall'assembly 'Sistema, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'

I risolto aggiungere Mono.Security al progetto eseguibile e ricostruirlo. Spero che questo aiuti

+0

come è stato fatto? –

+0

Ho fatto riferimento all'assembly dal GAC nel progetto eseguibile principale utilizzando Xamarin Studio IDE. – mauro