同じディレクトリ内で別のアプリケーション (B、CF 3.5 も同様) を呼び出して作業 (ファイルのダウンロード) を委任するアプリケーション (A、CF 3.5 と呼びましょう) があるとします。SQL Server CE アセンブリ (3.5 SP2) がアプリケーション A によってロードされていない限り、これはうまく機能します。ロードされている場合、アプリケーション B はランダムなファイル システム エラー (たとえば、アセンブリをロードできない) と多くの例外でクラッシュします。 filesys.exeで。Windows Mobile によって生成されたエラー レポートの内容は次のとおりです。
バケット パラメータ
EvntType: WinCE50lbException
アプリ名: filesys.exe
AppVer: 5.2.0.0
アプリスタンプ: 29ccdda8
ModName: vcefsd.dll
バージョン: 5.2.0.0
Modスタンプ: 52652c34
オフセット: 000017a0
所有者名: B.exe
所有バージョン: 1.0.0.0
所有スタンプ: 5003c932
このエラーは、デバッグが終了し、両方のアプリケーションが実行されなくなった後でも数回発生します。アプリケーション B 自体で発生するエラーの例:
ファイルまたはアセンブリ名 'OpenNETCF.Drawing, Version=2.2.0.0, Culture=neutral, PublicKeyToken=...' またはその依存関係の 1 つが見つかりませんでした。
アセンブリ名は時々変更されます (CF 3.5 アセンブリの場合もあります)。エラーはエミュレーターで (常に) 発生しますが、実際のデバイスでは発生しません。アプリケーション A が作業を B に委任する代わりにファイルをダウンロードしている場合、エラーは発生しません。
エミュレータのメモリ カード ドライバがこのエラーの原因であると思われますが、これ以上問題をデバッグする方法がわかりません。
注:アプリケーション A は、次の API 呼び出しを使用して、ローカルに配置された SQL CE ライブラリ (sqlceoledb35.dll、sqlcese35.dll、sqlceqp35.dll、sqlceme35.dll、sqlceca35.dll、sqlcecompact35.dll) をロードします。
[DllImport("coredll.dll")]
private static extern IntPtr LoadLibrary(string fileName);
アップデート
テストのために OpenNETCF 参照を削除した後、次の例外が発生しました。
構成ファイル '...\some.config' を読み取れません: UnauthorizedAccessException
これは、構成マネージャーによってラップされた例外です (B で発生するため、デバッグできません)。アプリケーション A はそのファイルを読み取りますが、逆シリアル化の直後に閉じて解放します。