我正在开发一个设备应用程序,使用与“常规”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
的迹象.
当我谷歌这个异常时,我主要得到这些建议:
Devices\Client
-directory 由“Windows Mobile 的 SQL Server Compact 3.5”( SSCEDeviceRuntime-ENU.msi
) 安装,我下载并尝试卸载并重新安装基本版本 SP1 和 SP2,但仍然没有部署差异。 .cab
单独安装 SQL 客户端。 (如 sql.wce5.armv4i.CAB
)和这个 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 是动态链接的,那么它无法知道它是必需的,也不会部署它:它也经常和静默地无法将文件部署到 Windows 目录。
我建议您在开发过程中手动部署该文件。我通常更喜欢这样做以确保我知道已部署的内容(批处理文件的乐趣......)。
关于visual-studio - 获取 Visual Studio 以在 Windows CE 上部署 dbnetlib.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6856266/