【问题标题】:Get Visual Studio to deploy dbnetlib.dll on Windows CE获取 Visual Studio 在 Windows CE 上部署 dbnetlib.dll
【发布时间】: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


    【解决方案1】:

    Visual Studio 通常可以很好地确定要部署的内容,但它并不完全可靠。例如,如果 DLL 是动态链接的,那么它就无法知道它是必需的,也不会部署它:它还会经常性地默默地无法将文件部署到 Windows 目录。

    我建议您在开发过程中手动部署文件。我通常更喜欢这样做,以确保我知道已部署的内容(批处理文件的乐趣......)。

    【讨论】:

    • 嗯,这可能是答案,但我不喜欢它:-(。我将只包括依赖于平台的\Devices\Client\wce500\armv4i\dbnetlib.dll。我仍然希望有一天能解决这个问题(梦想on!),因为我不喜欢这种显式的平台依赖性,它限制了灵活性。(我需要另一个 .msi,用于另一个平台。)此外,添加 dll 文件显式地引入了硬代码、复杂性和文件依赖性知识,这我想避免。但它当然可以防止这个问题stackoverflow.com/questions/350539/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多