.exeソリューションでは、同じディレクトリにいくつかのファイルがあります。それらの 1 つはマスター メニューです。これは、他のすべての実行可能ファイルのパス (同じディレクトリ内) を検索し、フォーム内のボタンに割り当てます。ボタンをクリックすると、その下にある exe が 経由で起動され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.LoginTextBox.Focus()コンストラクターにある UserControlです。「検証済み」イベントハンドラーに移動しようとしましたが、結果は同じですが、今回Form.Load()は独自の可視性を設定しようとするとクラッシュするという違いがあります。
デバイスのリセット後、このサイクルを繰り返すことができます。最も重要なことは、子実行可能ファイルのいずれかを直接実行すると、それらが起動して常に正常に動作することです。
同じコード セットが WinMo 6.1 でも正常に動作します。私もOpenNETCFのApplication2クラスを使用しています-それを標準クラスに置き換えてみましたApplicationが、同じ結果になりました。設定しようとしましProcess.StartInfo.WorkingDirectoryたUseShellExecuteが、再び喜びはありません。Process()「マスターメニュー」アプリでオブジェクトを見ると、期待どおりに動作します(プロセスを作成し、「true」を返す.Start()など)。
アセンブリは GAC にインストールされず、すべてのファイルが同じディレクトリに存在します。
手がかりはありますか?
[編集]
エラーが発生し、デバイスが約10分間放置された後、すべてが開始されます。サブアプリを1回実行できます。マスターメニューから現在のプロセスへの参照を消去し、プロセスを強制終了し、呼び出し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アプリのインストール ディレクトリにコピーした後:
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) の 1 つを読み込めないことがログに記録されています。これは .NET 3.5 アセンブリであると考えられます。私の知る限りSystem.SR.NET2でのみ使用されていますが、他の例外が表面化しようとしていて、このように現れているのではないでしょうか?