Ошибка SQL Server Compact: не удалось загрузить DLL ' sqlceme35.в DLL'. Не удалось найти указанный модуль

Я разрабатываю Windows Forms приложения с помощью Visual Studio 2008 с C#, который использует SQL Server Compact 3.5 база данных на клиенте. Клиент, скорее всего, будет 32-разрядными машинами Windows XP или Windows Vista. Я использую стандартный проект установщика Windows, который создает MSI файл и установки.exe для установки приложения на клиентском компьютере. Я новичок в SQL Server Compact, поэтому мне не приходилось распространять клиентскую базу данных, как это раньше сейчас. Когда я запускаю установку.exe (на новом Windows XP 32 бит с SP2 и Internet Explorer 7) он устанавливается нормально, но когда я запускаю приложение, я получаю эту ошибку:

не удалось загрузить DLL ' sqlceme35.в DLL'. Не удалось найти указанный модуль

Я потратил несколько часов на поиск этой ошибки уже, но все, что я мог найти, это проблемы, связанные с установкой на 64-битных Windows, и ни один из них не относится к обычному 32-биту, который я использую.

установить приложение копирует все найденные зависимые файлы в указанный каталог установки, включая System.Data.SqlServerCe.dll файл (версия сборки 3.5.1.0). Файл базы данных находится в каталоге под названием "данные" вне каталога приложения, а строка подключения для него -

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

некоторые вопросы у меня есть:

  • если приложение сможет найти файл DLL, если он находится в том же каталоге, то есть локальном для приложения, или мне нужно установить его в the GAC? (Если да, могу ли я использовать установщик Windows для установки DLL-файла в GAC?)
  • есть ли что-нибудь еще, что мне нужно распространять с приложением, чтобы использовать базу данных SQL Server Compact?
  • есть и другие DLL-файлы, такие как MS interop для экспорта данных в Excel на клиенте. Должны ли они быть установлены в GAC или будет достаточно найти их в каталоге приложения?

4 ответов


вам не нужно, чтобы он был в GAC для SQL Server Compact для запуска, и он заберет их из каталога приложений. Существует несколько способов развертывания проекта SQL Server Compact. Два основных способа:

  1. развертывание распространяемого установщика SQL Server Compact с вашим проектом, но этот способ является болезненным, а также может быть unistalled конечным пользователем или обновлен с помощью обновлений Windows и приложение.

  2. включая DLL-файлы в папке приложения. В зависимости от используемых функций SQL Server Compact (репликация или что-то еще) в папке приложения можно развернуть несколько DLL-файлов.

Если на вашем компьютере установлен SQL Server Compact, они, скорее всего, расположены по адресу "C:\Program файлы\Microsoft SQL Server Compact Edition\v3.5". Их можно добавить в проект в Visual Studio и затем установите тип вывода проекта в "копировать всегда". И главная ссылка на System.Data.SqlServerCe что у вас в ссылках на проект должно быть копировать локально значение true.

  • sqlceca35.dll файлы
  • sqlcecompact35.dll файлы
  • sqlceer35en.dll файлы
  • sqlceoledb35.dll файлы
  • sqlceqp35.dll файлы
  • sqlcese35.dll файлы

Если у вас все это установлено, то в вашем проекте установщика все, что вам нужно включить, это проектный результат этого проекта и Вы хороши. По-моему, это единственный выход. Это простое развертывание из нескольких файлов, и вы контролируете, какие версии DLL использует ваше приложение.

надеюсь, это поможет.


у меня была аналогичная проблема, приложение Visual Studio 2008 для Windows, предназначенное для 32-разрядной Windows XP и Windows Vista, которое использовало SQL Server Compact 3.5 SP1, а затем получило эту ошибку при установке на 64 - разрядную Windows 7:

не удалось загрузить DLL ' sqlceme35.в DLL'. Не удалось найти указанный модуль

Я встраивал MSI для SQL Server Compact в установщик для приложения.

после этого в замешательстве обсуждение на MSDN показал, что мне нужно использовать 64-разрядный MSI для SQL Server Compact на 64-разрядных машинах. О! То есть со страницы пакет обновления 1 для Microsoft SQL Server Compact 3.5 и Службы синхронизации для ADO.NET версия 1.0 пакет обновления 1 для рабочего стола Windows мне нужно SSCERuntime-ENU-x64.msi, а не SSCERuntime-ENU-x86.msi для 64-битных машин.


как: развертывание базы данных SQL Server Compact Edition с приложением должно помочь, по крайней мере, с вашими первыми двумя вопросами.

В общем, я думаю, что вы не должны ничего устанавливать в GAC для одного приложения.


следующее обеспечивает решение проблемы и объяснение также.

надеюсь, это поможет.