我正在开发一个设备应用程序,使用与“常规”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
-directory 是由“用于 Windows Mobile 的 SQL Server Compact 3.5”(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
到持久启动目录(如\Backup\Startup
在此 Datalogic 上)。
如果不尝试,我认为这甚至可能仅限于包括这个平台相关的dbnetlib.dll
,因为 System.Data.SqlClient.dll 确实被部署了。
但这对我来说更像是一种解决方法,部署应该解决这个问题。这项工作的缺点似乎是:- 每次冷启动时都会执行安装(甚至可能在热启动时)
- 通过显式定义向我的项目添加(更多)平台(和版本)依赖项
.cab
问题是:您知道正确部署 Visual Studio 的解决方案吗?
另一个问题可能是:您对这项工作有意见吗?
(顺便说一句:DB 连接在 Datalogic Memor WM(Windows Mobile)上运行良好,所以我猜该设备上已经安装了适当的 .NET 库。)