Честно говоря, я всегда думал, что способ обработки данных в ClickOnce опасен.Если вы развертываете базу данных с помощью ClickOnce, она помещается в DataDirectory.Затем, когда вы развертываете обновление в приложении, оно копирует базу данных вперед в папку, где установлена следующая версия приложения.Но если база данных изменяется, она копирует ее в папку + \ pre и помещает новую в каталог данных.Если вы не понимаете, что изменили его, он все равно заменит его.Если вам достаточно открыть базу данных SQLCE и проверить структуры данных, wham она будет развернута.Сюрприз!
Я думаю, что хранить данные в другой папке под профилем пользователя имеет больше смысла и безопаснее.Тогда ВЫ можете выбрать, когда обновлять свою базу данных. Эта статья покажет, как переместить ваши данные, чтобы они были в безопасности от обновлений ClickOnce.
Кроме того, когда вы действительно хотите внести изменения в свою базу данных, вы можете использовать для этого операторы SQL, такие как «ALTER TABLE» и так далее.Я создал сценарий и развернул его как одну длинную строку (с возвратом каретки), и приложение разделило ресурс на части путем возврата каретки и выполнило инструкции по одному.Вы получите общую идею.
Один комментарий о пользовательских настройках - Вы можете изменить их программно через пользовательский интерфейс (т.е. дать пользователю возможность).Но обратите внимание, что если вы измените сертификат своего приложения и используете достаточно высокую версию .NET (3.5, 4), это само по себе не вызовет проблем, но у него ПОЛНОСТЬЮ идентифицирует себя как приложение ClickOnce,и пользовательские настройки не переносятся при публикации следующего обновления.По этой причине я также свернул свой собственный XML-файл для данных конфигурации и также храню его в LocalApplicationData.