Как я могу обновить System.Data.SQLite.DLL из приложения, которое его использует? - PullRequest
0 голосов
/ 11 августа 2011

У меня есть приложение .NET, которое просто является программой обновления для другого приложения.Однако Updater использует SQLite для запроса базы данных о настройках прокси-сервера для загрузки обновлений с сервера.Мне нужно обновить DLL-библиотеку SQLite, но, конечно, я получаю «Процесс не может получить доступ к файлу« C: \ Program Files \ XXXX \ System.Data.SQLite.dll », потому что он используется другим процессом».

Я вижу в Википедии «SQLite - это не отдельный процесс, доступ к которому осуществляется из клиентского приложения, а его неотъемлемая часть».Но, похоже, дело не в этом.

Может кто-нибудь придумать обходной путь?

Ответы [ 2 ]

0 голосов
/ 12 августа 2011

Предполагается, что у вас есть "основное" приложение, которое запускает приложение для обновления - возьмите параметры прокси из основного приложения, а затем передайте их приложению для обновления в его командной строке.

Другой вариант - если вашПриложение Updater находится в C: \ Program Files \ XXXX \ Updater \, вы можете обновить копию библиотеки SQLite в главной папке, не сталкиваясь с конфликтами.Однако это не идеально - у вас есть 2 копии DLL, и ваше основное приложение, вероятно, захочет обновить SQLite DLL в папке Updater.

И еще один вариант - переместить параметры конфигурации проксик чему-то другому, чем база данных SQLite.Файл настроек XML очень хорошо подойдет для чего-то подобного, и библиотеки для его сериализации / десериализации встроены в .NET.

0 голосов
/ 11 августа 2011

Если вам нужно обновить библиотеку, которую использует ваше приложение, вы должны использовать позднюю привязку для загрузки библиотеки, чтобы вы могли отменить ее выделение по требованию и затем перезаписать файл.Вы, вероятно, рано связываете его сейчас, что предотвратит перезапись во время работы вашего процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...