我正在使用Visual Studio 2008 C#开发一个Windows Forms应用程序,该应用程序在客户端上使用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位上)它安装得很好,但是当我运行应用程序时出现此错误:
无法加载DLL的'sqlceme35.dll'。无法找到指定的模块
我已经花了几个小时搜索这个错误,但我找到的只是在64位Windows上安装的问题,而且与我正在使用的普通32位无关。
安装应用程序将找到的所有相关文件复制到指定的安装目录中,包括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" />
我有些问题:
答案 0 :(得分:6)
您不需要它在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。
如果您已经设置了这些,那么在您的安装程序项目中,您必须包含的是此项目的项目输出,并且您很好。在我看来,这是唯一的出路。它是一个简单的部署,由几个文件组成,您可以控制应用程序使用的DLL版本。
我希望有所帮助。
答案 1 :(得分:2)
我遇到了类似的问题,一个针对使用SQL Server Compact 3.5 SP1的32位Windows XP和Windows Vista的Visual Studio 2008 Windows应用程序 - 当安装在64位Windows 7上时出现此错误:
无法加载DLL的'sqlceme35.dll'。无法找到指定的模块
我正在将SQL Server Compact的MSI嵌入到应用程序的安装程序中。
在此之后相当困惑discussion on MSDN透露我需要在64位计算机上使用64位MSI for SQL Server Compact。 D'哦!也就是说,从页面 Microsoft SQL Server Compact 3.5 Service Pack 1 and Synchronization Services for ADO.NET version 1.0 Service Pack 1 for Windows Desktop 我需要SSCERuntime-ENU-x64.msi
而不是SSCERuntime-ENU-x86.msi
的64位计算机。
答案 2 :(得分:1)
How to: Deploy a SQL Server Compact Edition Database with an Application 应该提供帮助,至少在前两个问题上有所帮助。
一般情况下,我认为您不应在GAC中为单个应用程序安装任何内容。
答案 3 :(得分:1)