Dans la solution, j'ai plusieurs fichiers .exe
qui se trouvent dans le même répertoire. L'un d'entre eux est un menu principal, qui recherche le chemin de tous les autres exécutables (dans le même répertoire) et les assigne aux boutons du formulaire. Lorsque le bouton est cliqué, l'exe sous-jacent est lancé via Process.Start()
.Windows Mobile 6.5 - TypeLoadException sur Process.Start()
Chaque exe
est emballé dans une installation séparée CAB. Après l'installation initiale, j'exécute le menu principal, puis sélectionne les boutons et les lancements d'applications sous-jacents avec succès. Je le quitte, puis exécutez à nouveau le même ou toute autre application, mais cette fois-ci se bloque avec:
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
est un UserControl qui a TextBox.Focus()
dans son constructeur. J'ai essayé de le déplacer vers le gestionnaire d'événements 'Validated' mais le résultat est le même, avec une différence que cette fois il se bloque sur Form.Load()
en essayant de définir sa propre visibilité.
Le cycle peut être répété après la réinitialisation de l'appareil. Plus important encore, si je lance l'un des exécutables enfants directement ceux qui se lancent et fonctionnent bien tout le temps.
Le même jeu de codes fonctionne correctement sur WinMo 6.1. J'utilise aussi la classe Application2
d'OpenNETCF - j'ai essayé de la remplacer par la classe standard Application
avec le même résultat. Je ai essayé de mettre Process.StartInfo.WorkingDirectory
et UseShellExecute
mais encore aucune joie. Lorsque vous regardez l'objet Process()
dans l'application "Menu principal" - il se comporte comme prévu (crée le processus, retourne 'vrai' sur .Start()
etc).
Aucun assembly n'est installé sur GAC, tous les fichiers résident dans le même répertoire.
Des indices?
[Modifier]
Après je reçois l'erreur et le dispositif est laissé intact pendant environ 10 minutes tout revient à commencer: je peux courir à nouveau sous-application une fois, etc. Giving que j'ai essayé d'essuyage référence à processus en cours à partir de mon menu principal, en tuant le processus, en appelant GC.Collect()
sans résultat.
[Modifier]
journal Loader semble ok jusqu'à ce point (c'est là application commence à ne pas):
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]
Après avoir copié System.SR.dll
à app installdir:
Loading module [\windows\en\System.SR.resources.dll]
Attempt to load [\windows\en\System.SR.resources.dll] has failed (err 0x80001001)
Installée et NETCFv2.wm.armv4i.cab
mais maintenant le journal indique que l'un des dll spécifiques à l'appareil (ITCScan.DLL
) ne peut pas être l oaded, que je crois être l'assemblage .NET 3.5. Pour autant que je sache, System.SR
est utilisé seulement dans .NET2, n'est-ce pas qu'une autre exception essaie de faire surface et se manifeste comme ça?
Avez-vous essayé d'activer la journalisation et de regarder le journal du chargeur pour voir ce qui pourrait se produire? (http://msdn.microsoft.com/en-us/library/ms229650%28v=VS.90%29.aspx) – ctacke
@ctacke Loader log m'a laissé plus confus (poste mis à jour), je vais continuer à regarder – StaWho
FYI: ITCScan n'est pas un assembly .NET 3.5. C'est une bibliothèque native d'Intermec. – pdriegen