【发布时间】:2011-07-28 08:45:01
【问题描述】:
我正在开发一个设备应用程序,使用与“常规”Sql Server 2005(不是 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 的迹象。
当我谷歌这个异常时,我主要得到这些建议:
- 这是安装 Visual Studio 2005 和 2008 时的 Microsoft 错误。通过(重新)安装“SQL Server Compact 3.5 设计工具”http://support.microsoft.com/kb/945371 来解决。
- 我有 Visual Studio 2008 和 2010 - 我的系统上从未安装过 AFAIK 2005。我尝试卸载并重新安装 SQL Server Compact 3.5 设计工具 (\WCU\SSCE\SSCEVSTools-enu.msi)
-
编辑:由于
Devices\Client-目录是由“SQL Server Compact 3.5 for Windows Mobile”(SSCEDeviceRuntime-ENU.msi) 安装的,我下载并尝试卸载并重新安装基本版本 SP1和 SP2,但仍然没有部署差异。
- 另一个建议是使用(依赖于平台的)
.cab(如sql.wce5.armv4i.CAB)单独安装 SQL 客户端,并且此dbnetlib.dll复制自例如C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5\Devices\Client\wce500\armv4i到一个持久的启动目录(比如这个 Datalogic 上的\Backup\Startup)。
如果不尝试,我认为这甚至可能仅限于包含此平台相关的dbnetlib.dll,因为 System.Data.SqlClient.dll 确实已部署。
但这对我来说更像是一种解决方法,部署应该解决这个问题。这项工作的缺点似乎是:- 在每次冷启动时执行安装(甚至可能在热启动时)
- 通过显式定义
.cab向我的项目添加(更多)平台(和版本)依赖项
问题是:您知道正确部署 Visual Studio 的解决方案吗?
另一个问题可能是:您对这项工作有意见吗?
(顺便说一句:DB 连接在 Datalogic Memor WM(Windows Mobile)上运行良好,所以我猜该设备上已经安装了相应的 .NET 库。)
【问题讨论】:
标签: visual-studio dll installation windows-ce missingmethodexception