В настоящее время я работаю над C # WPF-проектом, который использует MySQL.Data и System.Data.Sqlite dll, а также несколько других.
Проект представляет собой проект .Net 4, который без проблем работает на моей машине разработки. Я создаю установочный пакет MSI, и когда я добавляю исполняемый файл, Visual Studio обрабатывает зависимости и добавляет необходимые DLL с помощью EXE.
Когда я запускаю установщик на моей машине для разработки, все работает нормально. Однако, когда я копирую установщик на пустую виртуальную машину с установленными .Net Framework 3.5 и .Net Framework 4, установщик говорит, что все успешно установлено, когда я смотрю в папку программных файлов, все DLL тоже есть, но когда Я пытаюсь запустить программное обеспечение, которое не загружается, и в средстве просмотра событий отображается ошибка .Net Runtime.
Ошибка выглядит следующим образом
Приложение: MySQLBackup.exe Framework Версия: v4.0.30319
Описание: процесс был прерван из-за необработанного исключения.
Информация об исключении: System.IO.FileLoadException Стек: в
MySQLBackup.App.Application_Startup (System.Object,
System.Windows.StartupEventArgs) в
System.Windows.Application.OnStartup (System.Windows.StartupEventArgs)
в System.Windows.Application. <. ctor> b__1 (System.Object) в
System.Windows.Threading.ExceptionWrapper.InternalRealCall (System.Delegate,
System.Object, Int32) в
MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen (System.Object,
System.Delegate, System.Object, Int32, System.Delegate) в
System.Windows.Threading.DispatcherOperation.InvokeImpl () в
System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext (System.Object)
в System.Threading.ExecutionContext.runTryCode (System.Object) в
System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup (TryCode,
CleanupCode, System.Object) в
System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext,
System.Threading.ContextCallback, System.Object) в
System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext,
System.Threading.ContextCallback, System.Object, Boolean) в
System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext,
System.Threading.ContextCallback, System.Object) в
System.Windows.Threading.DispatcherOperation.Invoke () в
System.Windows.Threading.Dispatcher.ProcessQueue () в
System.Windows.Threading.Dispatcher.WndProcHook (IntPtr, Int32, IntPtr,
IntPtr, Boolean ByRef) в MS.Win32.HwndWrapper.WndProc (IntPtr, Int32,
IntPtr, IntPtr, Boolean ByRef) в
MS.Win32.HwndSubclass.DispatcherCallbackOperation (System.Object) в
System.Windows.Threading.ExceptionWrapper.InternalRealCall (System.Delegate,
System.Object, Int32) в
MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen (System.Object,
System.Delegate, System.Object, Int32, System.Delegate) в
System.Windows.Threading.Dispatcher.InvokeImpl (System.Windows.Threading.DispatcherPriority,
System.TimeSpan, System.Delegate, System.Object, Int32) в
MS.Win32.HwndSubclass.SubclassWndProc (IntPtr, Int32, IntPtr, IntPtr)
в
MS.Win32.UnsafeNativeMethods.DispatchMessage (System.Windows.Interop.MSG
ByRef) в
System.Windows.Threading.Dispatcher.PushFrameImpl (System.Windows.Threading.DispatcherFrame)
в
System.Windows.Threading.Dispatcher.PushFrame (System.Windows.Threading.DispatcherFrame)
в System.Windows.Threading.Dispatcher.Run () в
System.Windows.Application.RunDispatcher (System.Object) в
System.Windows.Application.RunInternal (System.Windows.Window) в
System.Windows.Application.Run (System.Windows.Window) в
System.Windows.Application.Run () в MySQLBackup.App.Main ()
Сообщение об ошибке на самом деле не помогает мне понять, что не так, поэтому в событии запуска приложения я добавил операторы try catch, но исключение никогда не перехватывается. Я также добавил метод try catch вокруг InitialiseComponent()
, который выполняется в первом диалоговом окне, которое должно загрузиться, но опять-таки перехват никогда не перехватывается, поэтому я не вижу, что является причиной ошибки.
Как я могу выяснить, что это за проблема, и исправить ее?