ClickOnce не заменяет файлы App_Data во время переустановки - PullRequest
0 голосов
/ 01 мая 2018

Я заметил поведение, которое я не понимаю, при развертывании ClickOnce моего приложения: файл базы данных (Main.accdb), помеченный как файл данных, не заменяется в C: \ Users \ username \ AppData \ Roaming \ AppName после переустановки или установки более новой версии.

В Свойствах проекта> Опубликовать> Файлы приложений, которые у меня есть:

  • Имя файла App_Data \ Main.accdb
  • Состояние публикации = Файл данных
  • Группа загрузки = (обязательно)
  • Hash = Включить

В свойствах файла у меня есть:

  • Build Action = Content
  • Копировать в выходной каталог = Копировать всегда

Когда я устанавливаю свое приложение WPF с помощью ClickOnce в первый раз , файл находится в C: \ Users \ username \ AppData \ Roaming \ AppName. Однако, если я удалю, удалите файл в этой папке и переустановите его, он не будет заменен. Фактически, все, что удалено из этой папки, не заменяется переустановкой.

Я пробовал различные варианты статуса публикации, но одинаковое поведение происходит независимо от того, какие опции я выбираю. Я использую WPF с C # в Visual Studio 2017.

Почему это происходит и как я могу сделать так, чтобы файл всегда был там, когда приложение устанавливается (или, что еще лучше, запускается)?

1 Ответ

0 голосов
/ 21 июня 2018

Оказывается, что папка App_Data ведет себя по-разному, и проблему можно решить, используя папку с любым именем, кроме App_Data.

Я не могу найти это документированное нигде, за исключением нескольких сообщений на форуме пользователей с похожими проблемами, однако я смог убедиться, что все работает точно так, как ожидалось, после того, как я изменил имя папки.

Все это говорит о том, что Microsoft, похоже, хочет, чтобы разработчики использовали App_Data для баз данных, поэтому, возможно, это исключение из нормы и может быть неправильным подходом для большинства проектов. В моем случае это настольное приложение, которому необходимо установить локальную базу данных Access на компьютер пользователя при установке и поддерживать ее в актуальном состоянии / заменять во время переустановки и обновлений.

...