「通常の」SQLServer2005(Compact DBではない)との接続を使用して、デバイスアプリケーションを開発しています。Windows CE(Datalogic Memor CE)でSqlConnectionを開こうとすると、MissingMethodException
:が表示されCan't find PInvoke DLL 'dbnetlib.dll'.
ます。
これは展開の問題のようです。私のプロジェクトには次
C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5\Devices\Client\System.Data.SqlClient.dll
のものが含まれています。ファイルSystem.Data.SqlClient.dll
はアプリケーションディレクトリにデプロイされますが、の兆候はありませんdbnetlib.dll
。
この例外をグーグルで検索すると、主に次の提案が表示されます。
- これは、VisualStudio2005および2008がインストールされている場合のMicrosoftのバグです。'SQL Server Compact 3.5 Design Tools' http://support.microsoft.com/kb/945371を(再)インストールして解決します。
- VisualStudio2008と2010を使用しています。AFAIK2005はシステムに搭載されていませんでした。SQL Server Compact 3.5デザインツール(\ WCU \ SSCE \ SSCEVSTools-enu.msi)をアンインストールして再インストールしてみました
- 編集:-ディレクトリは「
Devices\Client
SQLServer Compact 3.5 for Windows Mobile」(SSCEDeviceRuntime-ENU.msi
)によってインストールされるため、ベースバージョンのSP1とSP2をダウンロードして再インストールしようとしましたが、それでも展開の違いはありませんでした。
.cab
もう1つの提案は、(プラットフォームに依存する) (などsql.wce5.armv4i.CAB
)を使用してSQLクライアントを個別にインストールし、これdbnetlib.dll
をたとえば(このDatalogicC:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5\Devices\Client\wce500\armv4i
のように)永続的な起動ディレクトリにコピーすることです。System.Data.SqlClient.dllがデプロイされるため、試さずに、 これはこのプラットフォームに依存するものを含めることに限定される可能性があると思います。 しかし、これは私には回避策のように思えます。デプロイメントがこれを処理する必要があります。この回避策の欠点は次のようです。\Backup\Startup
dbnetlib.dll
- インストールは、コールドブートごとに(場合によってはウォームブートでも)実行されます。
- 明示的に定義することにより、プロジェクトに(より多くの)プラットフォーム(およびバージョン)の依存関係を追加します
.cab
問題は、Visual Studioを正しく展開するためのソリューションを知っていますか?
別の質問は次のようになります:この回避策について意見がありますか?
(BTW:DB接続はDatalogic Memor WM(Windows Mobile)で正常に機能するため、適切な.NETライブラリがそのデバイスに既にインストールされていると思います。)