У меня большой проект wp7, который отлично работал на wp7. В течение нескольких последних недель я использовал устройство wp8 для отладки (проект все еще для wp7), и все было в порядке.
Теперь я начал тестировать его на устройстве wp7, и он меня бросает на линию
System.Windows.Application.LoadComponent(this, new System.Uri("/MyApp;component/App.xaml", System.UriKind.Relative));
это исключение
System.Reflection.TargetInvocationException occurred
Message=TargetInvocationException
StackTrace:
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.XamlManagedRuntimeRPInvokes.CreateInstance(XamlTypeToken inXamlType, XamlQualifiedObject& newObject)
at MS.Internal.XcpImports.Application_LoadComponentNative(IntPtr pContext, IntPtr pComponent, UInt32 cUriStringLength, String uriString, UInt32 cXamlStrLength, Byte* pXamlStr, UInt32 cAssemblyStrLength, String assemblyStr)
at MS.Internal.XcpImports.Application_LoadComponent(IManagedPeerBase componentAsDO, String resourceLocator, UnmanagedMemoryStream stream, UInt32 numBytesToRead, String assemblyString)
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at MyApp.App.InitializeComponent()
at MyApp.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)
InnerException: System.MissingMethodException
Message=Could not load type 'System.Func'2' from assembly 'mscorlib, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC'.
Я изменил тонны вещей, поэтому я понятия не имею, где искать.
Любые предложения о том, что может быть причиной? А что такое System.Func'2
?
EDIT: просто для того, чтобы прояснить это еще раз: проект всегда был нацелен на wp7. И это в настоящее время:
EDIT2: Выход:
'TaskHost.exe' (Managed): Loaded 'System.Device.dll'
'TaskHost.exe' (Managed): Loaded 'Cimbalino.Phone.Toolkit.Background.dll'
'TaskHost.exe' (Managed): Loaded 'Cimbalino.Phone.Toolkit.dll'
'TaskHost.exe' (Managed): Loaded 'GalaSoft.MvvmLight.Extras.WP71.dll'
'TaskHost.exe' (Managed): Loaded 'System.Runtime.Serialization.dll'
Может быть, это может помочь? Что-то не так с Serialization.dll на wp7?
EDIT3: Моя системная конфигурация: Windows 8.1 Pro, обновление MSVS Pro 2012 4.
Хорошо, мне удалось решить проблему. Проблема в том, что библиотека Newtonsoft.Json, текущая версия (6.0.3), как утверждается, совместима с wp7, но на практике это не так.
Решение: просто откат до 5.0.8: Install-Package Newtonsoft.Json -Version 5.0.8
После того как вы откроете свое WP7-приложение в VS 2012 с WP SDK 8.0 с целевой платформой для WP8, вы больше не сможете использовать этот проект в качестве проекта WP7. Если вы хотите продолжить разработку в новой среде в VS 2012, вам необходимо использовать платформу Target: WP 7.1. Проверьте, к чему предназначена целевая платформа.
Если вы хотите поддерживать WP 7 OS, вам необходимо поддерживать два разных приложения и отправлять их независимо в хранилище. Таким образом, кажется, что вы открыли проект с vs2012 и sdk 8.0, а затем создали и запустили его на wp8, а затем снова попытались сделать это для устройства wp7. Вот что, я думаю, это должно быть проблемой.