InvalidProgramException во время инициализации экземпляра установки MvvmCross

Я использую инфраструктуру MvvmCross для доставки кроссплатформенного приложения с использованием Xamarin. Мое приложение Windows Phone работает абсолютно файл под платформой WP8 и завершается ошибкой с внутренней ошибкой под платформой WP7. Я использую один проект Visual Studio (шаблон WP7) для платформ WP7 и WP8.

var setup = new Setup(RootFrame);
setup.Initialize();

А вот подробная трассировка стека:

System.InvalidProgramException was unhandled
  Message=InvalidProgramException
  StackTrace:
       at System.RuntimeType.GetConstructors(BindingFlags bindingAttr)
       at Cirrious.CrossCore.IoC.MvxTypeExtensions.<CreatableTypes>b__1(Type t)
       at System.Linq.Enumerable.<WhereIterator>d__0`1.MoveNext()
       at System.Linq.Enumerable.<WhereIterator>d__0`1.MoveNext()
       at Cirrious.CrossCore.Platform.MvxBootstrapRunner.Run(Assembly assembly)
       at Cirrious.MvvmCross.Platform.MvxSetup.PerformBootstrapActions()
       at Cirrious.MvvmCross.Platform.MvxSetup.InitializeSecondary()
       at Cirrious.MvvmCross.Platform.MvxSetup.Initialize()
       at MyApp.WP.App..ctor()
       at System.Reflection.RuntimeConstructorInfo.InternalInvoke(RuntimeConstructorInfo rtci, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)
       at System.Reflection.RuntimeConstructorInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark)
       at System.Reflection.ConstructorInfo.Invoke(Object[] parameters)
       at MS.Internal.TypeProxy.<>c__DisplayClass30.<GetCreateObjectDelegate>b__2a()
       at MS.Internal.TypeProxy.CreateInstance(UInt32 customTypeId)
       at MS.Internal.FrameworkCallbacks.CreateKnownObject(IntPtr nativeRootPeer, UInt32 customTypeId, String initializationString, IntPtr& nativePeer, UInt32 isCreatedByParser)
       at MS.Internal.FrameworkCallbacks.CreateUnknownObject(String assemblyName, String typeName, IntPtr nativeRootPeer, String initializationString, UInt32& customTypeId, UInt32& coreTypeId, UInt32& typeFlags, IntPtr& nativePeer)

Есть идеи, как диагностировать и устранить проблему?

1 ответ

Решение

Есть идеи, как диагностировать и устранить проблему?

Cirrious.CrossCore.Platform.MvxBootstrapRunner.Run call просматривает вашу основную сборку и ищет классы начальной загрузки для запуска.

Исключение происходит во время этой развертки.

Вы должны быть в состоянии получить немного больше информации об исключении, включив "разбить исключения" для InvalidProgramException

В противном случае вы также можете вызвать исключение в своем собственном коде, используя измененный CreatableTypes звоните - т.е. в вашем Setup переопределение кода PerformBootstrapActions и попробуйте позвонить:

    var things = MyCreatableTypes(this.GetType().Assembly).ToList();

с:

    public IEnumerable<Type> MyCreatableTypes(Assembly assembly)
    {
        return assembly
            .ExceptionSafeGetTypes()
            .Where(t => !t.IsAbstract)
            .Where(t => {
                try
                {
                    Mvx.Trace("About to call GetConstructors for Type {0}", t.Name);
                    return t.GetConstructors(BindingFlags.Instance | BindingFlags.Public).Any()
                }
                catch (InvalidProgramException e)
                {
                    // your trace or debugging code...
                    return false;
                });
    }

Надеюсь, это поможет вам диагностировать неисправность... и, возможно, исправление будет исправлено.


Обратите внимание: обратите внимание, что версия 3.1 MvvmCross (и более поздние версии) не будет поддерживать WP7, поскольку Microsoft только лицензировала более новые библиотеки PCL для кросс-платформенного использования - см. http://slodge.blogspot.co.uk/2013/07/mvvmcross-wp7-tombstoned.html. v3.0.14 - последняя официальная поддержка MvvmCross для WP7

Другие вопросы по тегам