visual-studio - 获取 Visual Studio 以在 Windows CE 上部署 dbnetlib.dll

标签 visual-studio dll installation windows-ce missingmethodexception

我正在开发一个设备应用程序,使用与“常规”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 的迹象.

当我谷歌这个异常时,我主要得到这些建议:

  • 这是一个 Microsoft 错误,当安装 Visual Studio 2005 和 2008 时。通过(重新)安装“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 客户端。 (如 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/

    相关文章:

    windows - 用于检查 Windows DLL 的 Linux 工具

    java - 奇怪的 Clojure Box - 库 (dll) 问题

    C# 安装项目安装程序不删除以前的版本

    android - 从 aerogear 统一推送服务器注销 android 客户端

    eclipse - 我可以回滚我的 Eclipse Juno 更新吗?

    .net - 在两个不同的 git 项目之间共享代码

    c# - 如何检查正在运行的进程是否为后台进程?

    c++ - 将模板类从 C++ 库导出到 VB.NET 和 C#

    c# - 文件类型图标未在 Visual Studio 中更新

    javascript - 从asp.net图表控件打开一个新窗口