Sql server SQL Server压缩错误:无法加载DLL';sqlceme35.dll';。找不到指定的模块

Sql server SQL Server压缩错误:无法加载DLL';sqlceme35.dll';。找不到指定的模块,sql-server,sql-server-ce,Sql Server,Sql Server Ce,我正在使用Visual Studio 2008 C#开发一个应用程序,该应用程序在客户端上使用3.5数据库。客户端很可能是32位WindowsXP或WindowsVista计算机。我正在使用标准的Windows Installer项目创建一个文件和setup.exe,以便在客户端计算机上安装应用程序。我是SQLServerCompact的新手,所以我以前从未分发过这样的客户机数据库。当我运行setup.exe(在带有SP2和InternetExplorer7的新Windows XP 32位上)时

我正在使用Visual Studio 2008 C#开发一个应用程序,该应用程序在客户端上使用3.5数据库。客户端很可能是32位WindowsXP或WindowsVista计算机。我正在使用标准的Windows Installer项目创建一个文件和setup.exe,以便在客户端计算机上安装应用程序。我是SQLServerCompact的新手,所以我以前从未分发过这样的客户机数据库。当我运行setup.exe(在带有SP2和InternetExplorer7的新Windows XP 32位上)时,它可以正常安装,但当我运行应用程序时,会出现以下错误:

无法加载DLL“sqlceme35.DLL”。找不到指定的模块

我已经花了几个小时搜索这个错误,但我能找到的只是与在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" />
?(如果是,我可以使用Windows Installer在GAC中安装DLL文件吗?)
  • 为了使用SQL Server Compact数据库,我还需要在应用程序中分发其他内容吗
  • 还有其他DLL文件,例如用于在客户端上将数据导出到Excel的MS interop。这些是否需要安装在GAC中,或者在应用程序目录中定位它们就足够了
  • 至少在你的前两个问题上应该有所帮助


    一般来说,我认为您不应该在GAC中为单个应用程序安装任何东西。

    下面提供了问题的解决方案和解释


    我希望这会有所帮助。

    您不需要在GAC中运行SQL Server Compact,它会从应用程序目录中获取它们。部署SQL Server Compact项目有几种方法。主要有两种方式:

  • 在项目中部署SQL Server Compact可再发行安装程序,但这种方式很痛苦,最终用户也可以不安装,或者通过Windows更新升级并中断应用程序

  • 包括应用程序文件夹中的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版本


    我希望这会有所帮助。

    我遇到了一个类似的问题,一个针对32位WindowsXP和WindowsVista的VisualStudio2008 Windows应用程序使用SQL Server Compact 3.5 SP1,然后在64位Windows 7上安装时出现此错误:

    无法加载DLL“sqlceme35.DLL”。找不到指定的模块

    我将MSI for SQL Server Compact嵌入到应用程序的安装程序中


    接下来,我发现我需要在64位机器上使用64位MSI for SQL Server Compact。哦!也就是说,从第页开始,我需要
    SSCERuntime-ENU-x64.msi
    ,而不是
    SSCERuntime-ENU-x86.msi
    ,用于64位机器。

    您好,谢谢。在上面第一次回复之后,我花了几天时间研究ClickOnce,但现在我又回到了MSI解决方案,因为ClickOnce在使用应用程序分发紧凑型数据库时效果不佳。我没有解决原来的问题,但我会尝试包含.dll。我第一次在应用程序目录中有sqlceme35.dll,但是我仍然得到了错误,所以不确定错误是否仍然存在。是的,希望它能工作。我们有一个通过click once部署的企业级智能客户端应用程序,以及一个嵌入式sql compact数据库,拥有数千名最终用户,到目前为止,这个解决方案似乎最适合我们,因为它可以轻松部署和自动更新应用程序。实际上,它只是敲响了一个铃铛(或者我应该说,当你说…ohhh时,它就被点击了),我不知道你是通过单击部署的。另外,请检入click once项目设置如果单击“发布”选项卡/应用程序文件,然后包括sql dll,则它们将得到正确部署,您可能必须选中“全部显示”才能查看它们。在最初尝试使用MSI后,我切换到ClickOnce。我遇到的问题是,当一个新版本的应用程序可用并被下载时,整个应用程序被设置在一个新的目录结构中。这意味着原始应用程序文件夹中的SQL compact数据库对新应用程序不可见。我可以把数据库复制到另一个文件夹中,每次运行应用程序时都检查它是否存在,如果不存在,复制它等等,但它看起来很笨重。您将本地数据库放在应用程序中的何处…是否将其存储在LocalApplicationData或其他位置?干杯,CWe使用了Application.UserAppDataPath,每个版本实际上都不同,只是它复制了t