2016-06-12 45 views
7

Po niedawnej aktualizacji do Xamarin Studio 6 i Mono 4.4.0.182 (z systemem OS X 10.10.5) stwierdziliśmy, że nasza aplikacja nie działa (strona Asp.NET MVC/Razor) . Rozwiązanie jednak działa poprawnie.
Próbowaliśmy wrócić do poprzednich wersji, które działały - Xamarin Studio 5.10.3 i Mono 4.3.2, a nasza aplikacja nadal nie działa poprawnie. Dokładnie ta sama aplikacja działała poprawnie przed aktualizacją.
Nie wprowadzono żadnych innych zmian środowiska/kodu, a ponowne uruchomienie również nie zadziałało.Mono - System.TypeLoadException: Nie można załadować typów

Błędy generowane po aktualizacji.

1-te Błąd (na wniosek start): System.Reflection.ReflectionTypeLoadException
ten jest wywołany przez SimpleInjector Container.RegisterPackages(). To działało przed aktualizacją Xamarin/Mono i nie zastosowano żadnych zmian kodu/aktualizacji pakietów.

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-ty Błąd (Po przeładowania strony i wszelkich późniejszych żądań strony): System.ArgumentException Element z tym samym kluczem został już dodany.
Odwołuje się do wywołania System.Web.Mvc.RouteCollectionExtensions.MapRoute w pliku App_Start/RouteConfig.cs (wywołanym z kolei z Global.asax.cs, Application_Start), wskazując, że plik ten jest wywoływany co najmniej dwa razy. Ponownie, działało to przed ostatnią aktualizacją Xamarin/Mono.

Czy ktoś może udzielić jakiejkolwiek pomocy i/lub sugestii?

EDYTOWANIE
Zwinięty do Mono 4.2.4.4, a błąd zniknął. Wygląda na to, że w pewnym momencie wprowadzono zmianę do wersji 4.3.2, która wprowadziła ten błąd.

+0

Jeśli zastanawianie się nad złożeniami i typami jest problemem w Mono, możesz łatwo usunąć funkcję pakietów Simple Injector i zamiast tego zrobić to bez refleksji. Funkcja pakietów jest bardzo przydatna w przypadku wysoce dynamicznych aplikacji opartych na wtyczkach. – Steven

+0

To samo przydarzyło mi się. Nadal nie mogłem znaleźć rozwiązania! – Deepal

+1

Powróciłem również do wersji 4.2.4.4 i działa. – Deepal

Odpowiedz

3

Miałem podobny problem:

nie można załadować typu 'System.Net.HttpListener' z zespołem 'System, Version = 4.0.0.0, Culture = neutral, TokenKluczaPublicznego = b77a5c561934e089'

Rozwiązałem dodanie Mono.Security do projektu wykonywalnego i przebudowanie go. Mam nadzieję, że to pomoże

+0

jak to zrobiłeś? –

+0

Odwołałem się do zestawu z GAC w głównym pliku wykonywalnym za pomocą Xamarin Studio IDE. – mauro