У нас есть ситуация, когда приложение C # работает с SQL CE 3.5. Чтобы позволить унаследованной программе использовать некоторые из ее функций, мы создали DLL C ++, которая использует взаимодействие для извлечения необходимой информации из программы C #. Чтобы это работало, C # -программе нужен доступ к базе данных. Это не очень сложный сценарий.
При попытке развертывания с частной установкой возникают некоторые проблемы.
Нет проблем с программой на C #, она может обращаться к базе данных и работать с ней без проблем.
Но при попытке доступа к функциям в C # -программе через взаимодействие C ++, которое заставляет C # -программу получить доступ к базе данных, мы получаем аварийное завершение с исключением: «... Provider: System. Data.SqlServerCe.3.5 не установлен ".
Это очевидно, потому что мы не можем добавить файл App.config к исполняемой программе.
Как мы можем обойти это? Есть ли другой способ исправить это? О любых других формах установки SQL CE 3.5 не может быть и речи. Поэтому мы должны заставить это работать.
С уважением,
P
Edit:
Я работаю не против SQL CE напрямую, а через Linq2SQL. Я пытался добавить файлы конфигурации ко всем моим DLL, это не помогает. Кажется, имеет значение только, если исполняемый файл получил app.config.
Возникло исключение: провайдер System.Data.SqlServerCe.3.5 не установлен.
И последняя функция, вызываемая в соответствии с трассировкой стека:
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Initialize (...).
Редактировать 2
Я добавил все файлы, необходимые для развертывания. Как я писал выше, это работает, если я использую программу dll (которая использует Linq 2 Sql) через исполняемый файл .net с файлом app.config, который указывает, где искать dll SQL CE 3.5. Развертывание будет не работать только с файлами, необходим файл app.config.
Проблема заключается в том, что мы должны использовать файл dll через исполняемый файл C ++, который не может сообщить .net, где искать DLL-файл Sql Ce 3.5.