В решении у меня есть несколько файлов .exe
, которые находятся в одном каталоге. Одним из них является главное меню, которое просматривает все остальные пути исполняемых файлов (в пределах одного и того же каталога) и назначает кнопкам в форме. Когда кнопка нажата, она запускается через exe через Process.Start()
.Windows Mobile 6.5 - TypeLoadException в Process.Start()
Каждый exe
упакован в отдельную установку CAB. После первоначальной установки я запускаю главное меню, а затем выбираю любую из кнопок и запущенных приложений. Я бросил его, а затем снова запустить то же самое или любое другое приложение, но на этот раз он падает с:
TypeLoadException
at System.Windows.Forms.Control.OnGotFocus(EventArgs e)
at System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
at Microsoft.AGL.Forms.WL.SetFocus(IntPtr hwnFocus)
at System.Windows.Forms.Control.Focus()
at myApp.Login..ctor()
at myApp.Form_UnderApp1.InitializeComponent()
at myApp.Form_UnderApp1..ctor()
at myApp.Program.Main()
myApp.Login
является UserControl, который имеет TextBox.Focus()
в своем конструкторе. Я попытался переместить его в обработчик событий «Validated», но результат тот же, с одной разницей, что на этот раз он падает на Form.Load()
при попытке установить свою собственную видимость.
Цикл может быть повторен после сброса устройства. Самое главное, если я запускаю любой из дочерних исполняемых файлов напрямую, запуская и работая нормально все время.
Тот же набор кодов работает отлично на WinMo 6.1. Я также использую класс Application2
OpenNETCF - попытался заменить его стандартным классом Application
с тем же результатом. Пытался установить Process.StartInfo.WorkingDirectory
и UseShellExecute
, но опять же никакой радости. При взгляде на объект Process()
в «Мастер-меню» приложение работает так, как ожидалось (создает процесс, возвращает «true» на .Start()
и т. Д.).
В GAC не установлены сборки, все файлы находятся в одной директории.
Любые подсказки?
[Редактировать]
После того как я получаю сообщение об ошибке и устройство остается нетронутым в течение примерно 10 минут, все это возвращается, чтобы начать: я могу снова запустить суб-приложение один раз и т.д. Давать, что я пытался вытирая ссылку на текущий процесс из моего главного меню, убивая процесс, вызывая GC.Collect()
без результата.
[Редактировать]
журнал погрузчик выглядит нормально до этого момента (это когда приложение начинает сбиваться):
Redirecting [Microsoft.WindowsCE.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC] to [Microsoft.WindowsCE.Forms, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC]
Loading module [\windows\GAC_Microsoft.WindowsCE.Forms_v3_5_0_0_cneutral_1.dll]
Loaded [Microsoft.WindowsCE.Forms, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC] from [\windows\GAC_Microsoft.WindowsCE.Forms_v3_5_0_0_cneutral_1.dll]
Loading module [\Program Files\MyApp\System.SR.dll]
Attempt to load [\Program Files\MyApp\System.SR.dll] has failed (err 0x80001000).
Loading module [\Program Files\MyApp\System.SR.exe]
Attempt to load [\Program Files\MyApp\System.SR.exe] has failed (err 0x80001000).
Loading module [\windows\System.SR.dll]
Attempt to load [\windows\System.SR.dll] has failed (err 0x80001000).
Loading module [\windows\System.SR.exe]
Attempt to load [\windows\System.SR.exe] has failed (err 0x80001000).
Failed to load [System.SR, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC]
После копирования System.SR.dll
к приложению INSTALLDIR:
Loading module [\windows\en\System.SR.resources.dll]
Attempt to load [\windows\en\System.SR.resources.dll] has failed (err 0x80001001)
установлен System_SR_ENU.CAB
и NETCFv2.wm.armv4i.cab
, но теперь журнал говорит, что одна из конкретных DLL устройств (ITCScan.DLL
) не может быть l oaded, который, как я считаю, является сборкой .NET 3.5. Насколько я знаю, System.SR
используется только в .NET2, разве это не то, что какое-то другое исключение пытается всплыть и проявляется вот так?
Вы пытались включить ведение журнала и посмотреть журнал загрузчика, чтобы узнать, что может произойти? (http://msdn.microsoft.com/en-us/library/ms229650%28v=VS.90%29.aspx) – ctacke
@ctacke Журнал загрузчика оставил меня более запутанным (сообщение обновлено), я буду продолжать смотреть – StaWho
FYI: ITCScan не является сборкой .NET 3.5. Это родная библиотека от Intermec. – pdriegen