gpt4 book ai didi

sql-server - SQL Server Compact错误: Unable to load DLL 'sqlceme35.dll' .找不到指定的模块

转载 作者:行者123 更新时间:2023-12-02 18:36:56 27 4
gpt4 key购买 nike

我正在开发一个 Windows Forms使用 Visual Studio 2008 C# 的应用程序,该应用程序使用 SQL Server Compact 3.5 客户端数据库。客户端很可能是 32 位 Windows XP 或 Windows Vista 计算机。我正在使用一个标准的 Windows Installer 项目来创建 MSI文件和 setup.exe 以在客户端计算机上安装应用程序。我是 SQL Server Compact 的新手,所以以前不需要像这样分发客户端数据库。当我运行 setup.exe(在带有 SP2 和 Internet Explorer 7 的新 Windows XP 32 位上)时,它安装得很好,但当我运行该应用程序时,出现此错误:

Unable to load DLL 'sqlceme35.dll'. The specified module could not be found

我已经花了几个小时搜索这个错误,但我所能找到的只是与在 64 位 Windows 上安装相关的问题,而没有与我正在使用的普通 32 位 Windows 相关的问题。

安装应用程序将找到的所有依赖文件复制到指定的安装目录中,包括 System.Data.SqlServerCe.dll 文件(程序集版本 3.5.1.0)。数据库文件位于应用程序目录中名为“data”的目录中,其连接字符串为

<add name="Tickets.ieOutlet.Properties.Settings.TicketsLocalConnectionString"         connectionString="Data Source=|DataDirectory|\data\TicketsLocal.sdf"  providerName="Microsoft.SqlServerCe.Client.3.5" />

我有一些问题:

  • 如果 DLL 文件位于同一目录(即应用程序的本地目录)中,应用程序是否应该能够找到该 DLL 文件,或者我是否需要将其安装在 GAC 中? ? (如果可以,我可以使用 Windows Installer 在 GAC 中安装 DLL 文件吗?)
  • 为了使用 SQL Server Compact 数据库,我还需要与应用程序一起分发其他内容吗?
  • 还有其他 DLL 文件,例如用于将数据导出到客户端上的 Excel 的 MS interop。这些是否需要安装在 GAC 中还是将它们放在应用程序目录中就足够了?

最佳答案

您不需要将其置于 GAC 中即可运行 SQL Server Compact,它会从应用程序目录中选取它们。有多种方法可以部署 SQL Server Compact 项目。主要有两种方式:

  1. 在您的项目中部署 SQL Server Compact 可再发行安装程序,但这种方式很痛苦,而且可能会被最终用户卸载,或者通过 Windows 更新进行升级并破坏您的应用程序。

  2. 将 DLL 文件包含在应用程序文件夹中。根据您使用的 SQL Server Compact 功能(复制或其他),您的应用程序文件夹中需要部署一些 DLL 文件。

如果您的计算机上安装了 SQL Server Compact,它们很可能位于“C:\Program Files\Microsoft SQL Server Compact Edition\v3.5”。可以将它们添加到 Visual Studio 中的项目中,然后将其项目输出类型设置为“始终复制”。项目引用中对 System.Data.SqlServerCe 的主要引用应将 copy local 设置为 true。

  • sqlceca35.dll
  • sqlcecompact35.dll
  • sqlceer35en.dll
  • sqlceoledb35.dll
  • sqlceqp35.dll
  • sqlcese35.dll

如果您已完成所有这些设置,那么在您的安装程序项目中,您只需包含该项目的项目输出即可。在我看来,这是唯一的出路。这是一个简单的部署,由几个文件组成,您可以控制应用程序使用的 DLL 版本。

希望对您有所帮助。

关于sql-server - SQL Server Compact错误: Unable to load DLL 'sqlceme35.dll' .找不到指定的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2263014/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com