Я разрабатываю приложение Windows Forms с помощью Visual Studio 2008 C#, который использует базу данных SQL Server Compact 3.5 по клиенту. Клиентом, скорее всего, будет Windows XP на 32 бита или машины Windows Vista. Я использую стандартный проект Windows Installer, который создает файл MSI и setup.exe для устанавливания приложения на клиентской машине. Я плохо знаком с Компактным SQL Server, таким образом, я не должен был распределять клиентскую базу данных как это до настоящего времени. Когда я выполняю setup.exe (на новом Windows XP 32 бита с SP2 и Internet Explorer 7), он устанавливает прекрасный, но когда я запускаю приложение, я получаю эту ошибку:
Не мог загрузить DLL 'sqlceme35.dll'. Указанный модуль не мог быть найден
Я провел несколько часов, уже ища эту ошибку, но все, что я мог найти, было проблемами, касающимися установки в Windows на 64 бита и ни одном касающемся нормальных 32 битов, которые я использую.
Копии приложений установки все зависимые файлы, которые это нашло в указанный каталог установки, включая System.Data.SqlServerCe.dll
файл (версия 3.5.1.0 блока). Файл базы данных находится в каталоге, названном 'данными' от каталога приложения, и строка подключения для него
Некоторые вопросы я имею:
Вам не нужно, чтобы он был в 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 использует ваше приложение.
Надеюсь, это поможет.
Ниже приводится решение проблемы, а также объяснение.
Устранение неполадок: не удается загрузить SQL Server Compact DLL
SqlCeException при первом использовании SQL Server Compact приложением
Надеюсь, это поможет.
Как: Развертывание базы данных SQL Server Compact Edition с приложением должно помочь, по крайней мере, в первых двух вопросах.
В общем, я думаю, вам не следует устанавливать что-либо в GAC для одного приложения.